mp4ファイルを読み取るために、opencvに次のコードがあります。
CvCapture *capture =cvCreateFileCapture("DemoRecording.mp4");
if(!capture){
cout<<endl<<"Capture from file error"<<endl;
return;
}
CvSize sz =cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));
CvVideoWriter *writer =cvCreateVideoWriter("DemoRecording.avi", CV_FOURCC('L','A','G','S'), (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS), sz);
IplImage *frame =cvCreateImage(sz, 8, 3);
while(1){
// Read Frames
}
cvReleaseVideoWriter(&writer);
cvReleaseCapture(&capture);
ただし、mp4 ファイルを読み取ることができません。このファイルは H. 264 を使用してエンコードされています。ffmpeg で表示されるファイルの詳細は次のとおりです。
fplay version N-42347-g299387e Copyright (c) 2003-2012 the FFmpeg developers
built on Jul 8 2012 15:44:54 with gcc 4.7.1
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libcelt --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
libavutil 51. 64.100 / 51. 64.100
libavcodec 54. 33.100 / 54. 33.100
libavformat 54. 15.102 / 54. 15.102
libavdevice 54. 1.100 / 54. 1.100
libavfilter 3. 1.100 / 3. 1.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'DemoRecording.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf53.31.100
Duration: 00:00:16.23, start: 0.000000, bitrate: 819 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 540x720, 816 kb/s, 21.19 fps, 30 tbr, 600 tbn, 1200 tbc
Metadata:
handler_name : VideoHandler
Frame changed from size:0x0 to size:540x720
[ffplay_buffer @ 04149040] w:540 h:720 pixfmt:yuv420p tb:1/600 fr:0/1 sar:0/1 sws_param:
[ffplay_buffersink @ 04ca69c0] No opaque field provided
更新された k-lite コーデック パックがマシンにインストールされています。私もffmpegを持っています。mp4 ファイルのデコードに libavcodec vfw を使用する Premier Pro などのソフトウェアは、ファイルを再生できます。
ただし、openCV はファイルを読み取ることができません。この問題に関するヘルプは大歓迎です。