Python 3.7、OpenCV、および MPEG4 および H264 コーデックを使用してファイルを書き込むと、予期しない結果が得られます。H264 の圧縮率は MPEG-4 よりも高いと書かれていますが、私のスクリプトでは逆の結果が得られます。
OpenCV v3.4.11 と OpenH264 v1.7 を使用しています。最初に OpenCV を使用して、Web カメラ ストリームを 30 秒間キャプチャし、圧縮されていないファイルに書き込みました。
次に、ビデオ ファイルを読み取り、AVI コンテナー内の 2 つのファイルに書き込むスクリプトを作成しました。1 つは MPEG-4 コーデックを使用し、もう 1 つは H264 コーデックを使用します。
MPEG-4 ファイルが H264 ファイルより小さいのはなぜですか? これが私のスクリプトと結果です。
import cv2, os
infile = 'SourceVideo.AVI'
outfile1 = 'TestVideo-mpeg4.avi'
outfile2 = 'TestVideo-h264.avi'
cap = cv2.VideoCapture(infile)
fourccmpeg4 = cv2.VideoWriter_fourcc('m','p','4','v')
fourcch264 = cv2.VideoWriter_fourcc('h','2','6','4')
mpeg4 = cv2.VideoWriter(outfile1, fourccmpeg4, 30, (1280, 720))
h264 = cv2.VideoWriter(outfile2, fourcch264, 30, (1280, 720))
ret = True
while ret == True:
ret, frame = cap.read()
mpeg4.write(frame)
h264.write(frame)
mpeg4.release()
h264.release()
cap.release()
print('MPEG4 Size = ', os.path.getsize(outfile1), ' bytes')
print('H264 Size = ', os.path.getsize(outfile2), ' bytes')
MPEG4 Size = 35160392 bytes
H264 Size = 50908015 bytes