1

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 はファイルを読み取ることができません。この問題に関するヘルプは大歓迎です。

4

0 に答える 0