对于没有有效支持它的复用器,帧速率非常高

时间:2013-08-05 17:58:17

标签: ffmpeg

尝试使用FFMpeg运行以下命令时出错:

-i“file1.mp4”-s 506x406 -b:v 2000k -ar 22050“file2.mp4”

FFMpeg被困这个视频,这个视频只是一个7Mb .mp4文件,持续了几个小时,最终我不得不杀死这个过程。

FFMpeg的输出错误如下:

Converter Error Message: 
ffmpeg version N-42069-g3233ad4 Copyright (c) 2000-2012 the FFmpeg developers
  built on Jun 30 2012 13:18:20 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. 63.100 / 51. 63.100
  libavcodec     54. 31.100 / 54. 31.100
  libavformat    54. 14.100 / 54. 14.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     3.  0.100 /  3.  0.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 'File1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42mp41
    creation_time   : 2013-07-18 15:38:11
  Duration: 00:02:02.23, start: -7.105889, bitrate: 518 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 718x574 [SAR 64:45 DAR 22976:12915], 361 kb/s, 24.97 fps, 90k tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 2013-07-18 15:38:11
      handler_name    : Apple Video Media Handler
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 129 kb/s
    Metadata:
      creation_time   : 2013-07-18 15:38:11
      handler_name    : Apple Sound Media Handler
[graph 0 input from stream 0:0 @ 0259cee0] w:718 h:574 pixfmt:yuv420p tb:1/90000 fr:90000/1 sar:64/45 sws_param:flags=2
[output stream 0:0 @ 0259cda0] No opaque field provided
[scaler for output stream 0:0 @ 0259c0e0] w:718 h:574 fmt:yuv420p sar:64/45 -> w:506 h:406 fmt:yuv420p sar:666304/466785 flags:0x4
**[mp4 @ 02599020] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2**
[graph 1 input from stream 0:1 @ 02b88200] tb:1/48000 samplefmt:s16 samplerate:48000 chlayout:0x3
[auto-inserted resampler 0 @ 024e44e0] chl:stereo fmt:s16 r:48000Hz -> chl:stereo fmt:s16 r:22050Hz
[libx264 @ 02407200] using SAR=895/627
[libx264 @ 02407200] MB rate (74880000) > level limit (2073600)
[libx264 @ 02407200] using cpu capabilities: MMX2 SSE2Fast SSSE3 Cache64
[libx264 @ 02407200] profile High, level 5.2
[libx264 @ 02407200] 264 - core 125 r2200 999b753 - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=2000 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'File2.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42mp41
    encoder         : Lavf54.14.100
    Stream #0:0(und): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 506x406 [SAR 666304:466785 DAR 22976:12915], q=-1--1, 2000 kb/s, 180k tbn, 90k tbc
    Metadata:
      creation_time   : 2013-07-18 15:38:11
      handler_name    : Apple Video Media Handler
    Stream #0:1(und): Audio: aac ([64][0][0][0] / 0x0040), 22050 Hz, stereo, s16, 128 kb/s
    Metadata:
      creation_time   : 2013-07-18 15:38:11
      handler_name    : Apple Sound Media Handler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (aac -> libvo_aacenc)
Press [q] to stop, [?] for help
DTS -3600, next:-79995 st:0 invalid dropping
frame= 7201 fps=768 q=69.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s dup=7198 drop=0    
frame=10801 fps=575 q=69.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s dup=10797 drop=0    
frame=14401 fps=516 q=69.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s dup=14396 drop=0    
frame=18001 fps=484 q=69.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s dup=17995 drop=0    
frame=21601 fps=464 q=69.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s dup=21594 drop=0    
frame=25201 fps=454 q=69.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s dup=25193 drop=0    
.....

在我杀死这个过程之前,它几乎就是这样。

任何人都可以向我解释这里发生了什么以及我可以做些什么来解决这个问题?

1 个答案:

答案 0 :(得分:2)

就像ffmpeg输出说的那样

Please consider specifying a lower framerate, a different muxer or -vsync 2**

添加 -vsync 2 ,问题就会解决。


编辑以添加说明

-vsync参数是视频同步方法。它确定帧从输入传递到输出的方式。以下是可能的选项,取自当前的ffmpeg docs

0passthrough - 每个帧的时间戳都从解复用器传递到复用器。

1cfr - 将复制和删除帧以实现所请求的恒定帧速率。

2vfr - 帧以其时间戳传递或丢弃,以防止2帧具有相同的时间戳。

drop - 作为passthrough但是会破坏所有时间戳,使muxer根据帧速率生成新的时间戳。

-1auto - 根据多路复用功能选择1到2之间。这是默认方法。

(其中一些值的多个值的原因是它过去只是按数字,现在按名称。这些数字仍被允许用于避免向后兼容性。)< / p>

添加2会有所帮助的原因是它会丢弃更多帧并使复用器更容易。缺点是,你可能会丢帧。