Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Frame rate very high for a muxer not efficiently supporting it

Tags:

ffmpeg

I got an error when trying to run the following command with FFMpeg:

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

FFMpeg was stuck converting this video, which was just a 7Mb .mp4 file, for hours and eventually I had to kill the process.

The output error from FFMpeg is as follows:

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    
.....

And it just pretty much carries on like that until when I killed the process.

Can anyone explain to me what is going on here and what I can do to fix this?

like image 278
DevDave Avatar asked Aug 05 '13 17:08

DevDave


1 Answers

Like the ffmpeg output said

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

Add -vsync 2 and problem will be solved.


Edit to add explanation:

The -vsync parameter is a video sync method. It determines the way in which frames are passed from the input to the output. Here are the possible options, taken from the current ffmpeg docs.

0 or passthrough - Each frame is passed with its timestamp from the demuxer to the muxer.

1 or cfr - Frames will be duplicated and dropped to achieve exactly the requested constant frame rate.

2 or vfr - Frames are passed through with their timestamp or dropped so as to prevent 2 frames from having the same timestamp.

drop - As passthrough but destroys all timestamps, making the muxer generate fresh timestamps based on frame-rate.

-1 or auto - Chooses between 1 and 2 depending on muxer capabilities. This is the default method.

(The reason for the multiple values for some of them is that it used to just be by number, and now it's by name. The numbers are still allowed to be used to avoid breaking backwards compatibility.)

The reason that adding 2 will help here is that it drops more frames and makes thing easier on the muxer. Downsides are, you may lose frames.

like image 142
PJunior Avatar answered Oct 09 '22 19:10

PJunior