2013-03-27 30 views
10

Video yazmak için Mac'te ffmpeg ile OpenCV kullanıyorum. Codec/fourcc kodu FMP4 kullanarak .avi dosyalarını başarıyla yazabildim. Ancak, .mp4 dosyalarını yazmak istiyorum. Ben fourcc FMP4 kullanarak bir .mp4 dosyası yazmak çalıştığınızda bu hatayı alıyorum:OpenCV ffmpeg ile Mac'te bir MP4 dosyası yazma

[mp4 @ 0x100b4ec00] Tag FMP4/0x34504d46 incompatible with output codec id '13' ([0][0][0]) 

Ben AVC1 kullandığınızda aşağıdaki hatayı alıyorum:

[libx264 @ 0x104003000] broken ffmpeg default settings detected 
[libx264 @ 0x104003000] use an encoding preset (e.g. -vpre medium) 
[libx264 @ 0x104003000] preset usage: -vpre <speed> -vpre <profile> 
[libx264 @ 0x104003000] speed presets are listed in x264 --help 
[libx264 @ 0x104003000] profile is optional; x264 defaults to high 
Could not open codec 'libx264': Unspecified error 

burada herkes doğru codec biliyor kullanmayı mu OpenCV ve ffmpeg ile Mac'te bir MP4 kapsayıcısına yazabilirsiniz?

AVC1 doğru kodekse, ffmpeg + OpenCV'yi nasıl düzgün kurabilirim? Ben x264 --help çalıştırdığınızda ben

% x264 --help 
x264 core:125 
Syntax: x264 [options] -o outfile infile 

Infile can be raw (in which case resolution is required), 
    or YUV4MPEG (*.y4m), 
    or Avisynth if compiled with support (no). 
    or libav* formats if compiled with lavf support (no) or ffms support (no). 
Outfile type is selected by filename: 
.264 -> Raw bytestream 
.mkv -> Matroska 
.flv -> Flash Video 
.mp4 -> MP4 if compiled with GPAC support (no) 
Output bit depth: 8 (configured at compile time) 

Options: 

    -h, --help     List basic options 
     --longhelp    List more options 
     --fullhelp    List all options 

Example usage: 

     Constant quality mode: 
      x264 --crf 24 -o <output> <input> 

     Two-pass with a bitrate of 1000kbps: 
      x264 --pass 1 --bitrate 1000 -o <output> <input> 
      x264 --pass 2 --bitrate 1000 -o <output> <input> 

     Lossless: 
      x264 --qp 0 -o <output> <input> 

     Maximum PSNR at the cost of speed and visual quality: 
      x264 --preset placebo --tune psnr -o <output> <input> 

     Constant bitrate at 1000kbps with a 2 second-buffer: 
      x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input> 

Presets: 

     --profile <string>  Force the limits of an H.264 profile 
            Overrides all settings. 
            - baseline,main,high,high10,high422,high444 
     --preset <string>  Use a preset to select encoding settings [medium] 
            Overridden by user settings. 
            - ultrafast,superfast,veryfast,faster,fast 
            - medium,slow,slower,veryslow,placebo 
     --tune <string>   Tune the settings for a particular type of source 
           or situation 
            Overridden by user settings. 
            Multiple tunings are separated by commas. 
            Only one psy tuning can be used at a time. 
            - psy tunings: film,animation,grain, 
               stillimage,psnr,ssim 
            - other tunings: fastdecode,zerolatency 

Frame-type options: 

    -I, --keyint <integer or "infinite"> Maximum GOP size [250] 
     --tff     Enable interlaced mode (top field first) 
     --bff     Enable interlaced mode (bottom field first) 
     --pulldown <string>  Use soft pulldown to change frame rate 
            - none, 22, 32, 64, double, triple, euro (requires cfr input) 

Ratecontrol: 

    -B, --bitrate <integer>  Set bitrate (kbit/s) 
     --crf <float>   Quality-based VBR (0-51) [23.0] 
     --vbv-maxrate <integer> Max local bitrate (kbit/s) [0] 
     --vbv-bufsize <integer> Set size of the VBV buffer (kbit) [0] 
    -p, --pass <integer>  Enable multipass ratecontrol 
            - 1: First pass, creates stats file 
            - 2: Last pass, does not overwrite stats file 

Input/Output: 

    -o, --output <string>  Specify output file 
     --sar width:height  Specify Sample Aspect Ratio 
     --fps <float|rational> Specify framerate 
     --seek <integer>  First frame to encode 
     --frames <integer>  Maximum number of frames to encode 
     --level <string>  Specify level (as defined by Annex A) 
     --quiet     Quiet Mode 

Filtering: 

     --vf, --video-filter <filter0>/<filter1>/... Apply video filtering to the input file 

     Filter options may be specified in <filter>:<option>=<value> format. 

     Available filters: 
     crop:left,top,right,bottom 
     select_every:step,offset1[,...] 

Teşekkür, -s

+0

Konteynerleri FOURCCs gerekmez - sadece codec ve piksel formatlarını için. 'FMP4' MPEG-4 (Bölüm 2) videosu. Hangi video kodek kullanıyorsunuz? H.264/MPEG-4 AVC 'AVC1' veya diğerleri (bkz. Http://www.fourcc.org/codecs.php) – slhck

+0

Merhaba, @slhck, bu benim sorum. MP4 kabına yazarken hangi video kodlayıcıyı kullanmalıyım? Bu noktada daha açık olmak için bu soruyu güncelledim. Teşekkürler. –

+0

Lütfen, tam çıkış dahil olmak üzere, kullandığınız tam kesilmemiş komut satırını belirtin. X264'ü de yüklediğinizden emin misiniz? ('brew install x264; brew uninstall ffmpeg; brew install ffmpeg') – slhck

cevap

7

Bu görünüyor olsun

fourcc = cv2.cv.CV_FOURCC('A', 'V', 'C', '1') 
video_out = cv2.VideoWriter(
    filename=output_filename, 
    fourcc=fourcc, 
    fps=video_fps, 
    frameSize=(video_width,video_height), 
    isColor=1) 

: Ben

brew install gpac 
brew install ffmpeg 
brew install opencv 

Ben videowriter açmaya kullanıyorum çağrısı yaptı eski bir soru ama buna yanaşanların yararı için cevaplayacağım. Ffmpeg kaynağından yüklediğiniz sürece ffmpeg x264 ile çalışamazsınız. Bu nedenle, paket yöneticilerinden ikili kurulumlar x264 paketlerini etkinleştirmeyecektir. X264'ü ikili olarak yükleyebilirsiniz (ancak muhtemelen x264'ün hangi sürümünü ffmpeg'in doğru sürümü ile uyumlu olmasını istediğinizi kontrol etmek için kaynak kullanmak isteyebilirsiniz).

Bu soruyu yanıtlamak için: Yüklemeniz önce x264'ü yüklemeli ve sonra ffmpeg'i --enable-libx264 ile derlemelidir.

Artık ffmpeg'in kaynağından nasıl derleneceği konusunda birçok kılavuz var. Hızlı bir google araması bunu gerçekleştirdi: Mac için http://www.martinlos.com/?p=41 ve ubuntu için https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide. Düzenli olarak ubuntu kaynağından derledim ve bu talimatları biliyorum ve mac olanlar da iyi görünüyor.

İlgili konular