私はpython 2.7.5_1とopencv 2.4.4_0がmacports経由でインストールされたmac os x 1.7.5を使用しています。最新の依存ポートがすべてあるようです。
私のコードでは、cv2.Videowriter()
が正常に作成されて開かれ、6kb の .avi ファイルが生成されますが、videoFile.write(img0)
そのファイルには何も書き込まれません。ビデオストリームがファイルに書き込まれない理由を本当に理解できません。洞察はありますか?
私のコードは次のとおりです。
import cv2
import cv
cv2.namedWindow("Original")
cap0 = cv2.VideoCapture(0)
codec = cv.CV_FOURCC('D','I','V','X')
print codec
videoFile = cv2.VideoWriter();
videoFile.open('video.avi', codec, 25, (640, 480),1)
key = -1
while(key < 0):
success0, img0 = cap0.read()
cv2.imshow("Original", img0)
videoFile.write(img0)
key = cv2.waitKey(1)
cv2.destroyAllWindows()
これらのコーデックを試しましたが、どれも機能しませんでした: I420、AVC1、YUV1、PIM1、MJPG、MP42、MP4V、DIV3、DIVX、XVID、IUYV、FFV1、FLV1、U263、H264、ZLIB
ここで言及されているすべてのクイックタイムコーデックも調べました
ZLIB コーデックを使用すると、次のエラーが表示されます。
[zlib @ 0x7fb0d130a000] Specified pixel format yuv420p is invalid or not supported
H264 コーデックを使用すると、エラーが発生します。
[libx264 @ 0x7fe423869600] broken ffmpeg default settings detected
[libx264 @ 0x7fe423869600] use an encoding preset (e.g. -vpre medium)
[libx264 @ 0x7fe423869600] preset usage: -vpre <speed> -vpre <profile>
[libx264 @ 0x7fe423869600] speed presets are listed in x264 --help
[libx264 @ 0x7fe423869600] profile is optional; x264 defaults to high
上記のエラーの意味がわかりませんでした。ffmpeg を最新バージョン (1.2.2_0+gpl2) に再インストールしようとしましたが、スクリプトがまだ機能しません。他のすべてのコーデックではエラーは発生しませんでした。
上記のコーデックで .mpg と .mkv のファイル拡張子も試しました。コーデックがファイル拡張子に適していないというエラーが表示されることがありますが、エラーが表示されない場合は、ごくわずかなサイズの読み取り不能なビデオ ファイルが表示されるだけでした。
どんな助けでも大歓迎です。
ps:私の問題を解決しなかった次のSOの質問をすでに行っています: