[FFmpeg-trac] #187(undetermined:open): 3GP/MP4 performance regression
FFmpeg
trac at avcodec.org
Wed May 11 18:06:17 CEST 2011
#187: 3GP/MP4 performance regression
------------------------+---------------------------
Reporter: jsd | Owner:
Type: defect | Status: open
Priority: normal | Component: undetermined
Version: unspecified | Resolution:
Keywords: | Blocked By:
Blocking: | Reproduced: 0
Analyzed: 0 |
------------------------+---------------------------
Comment (by jsd):
With this command line, it runs perfectly fine:
ffmpeg -y -i 2423.mp4 -s 480x352 -b 300k -bt 300k test.flv
It's fine if I add -acodec libfaac. It's fine if I add -vcodec libx264.
Maybe this points to the mp4 muxer being a problem? I will spend the rest
of the day trying to pin down where things changed. If you think of
anything, please update this ticket, I will be online all day.
Here is complete uncut output with flv muxer (good):
$ ffmpeg -y -i 2423.mp4 -s 480x352 -b 300k -bt 300k -acodec libfaac
-vcodec libx264 test.flv
ffmpeg version UNKNOWN, Copyright (c) 2000-2011 the FFmpeg developers
built on May 5 2011 11:01:27 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame
--enable-libx264 --enable-pthreads --enable-static --disable-shared
--disable-network --enable-nonfree
libavutil 51. 2. 0 / 51. 2. 0
libavcodec 53. 3. 0 / 53. 3. 0
libavformat 53. 0. 3 / 53. 0. 3
libavdevice 53. 0. 0 / 53. 0. 0
libavfilter 2. 4. 0 / 2. 4. 0
libswscale 0. 14. 0 / 0. 14. 0
Seems stream 1 codec frame rate differs from container frame rate:
60000.00 (60000/1) -> 30000.00 (60000/2)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2423.mp4':
Metadata:
major_brand : 3gp4
minor_version : 768
compatible_brands: 3gp43gp6
Duration: 00:02:55.63, start: 0.000000, bitrate: 3493 kb/s
Stream #0.0(eng): Audio: aac, 16000 Hz, mono, s16, 61 kb/s
Stream #0.1(eng): Video: h264 (Baseline), yuv420p, 720x480, 3429 kb/s,
29.83 fps, 30k tbr, 30k tbn, 60k tbc
[buffer @ 0x8d5d5e0] w:720 h:480 pixfmt:yuv420p
[scale @ 0x8d5c940] w:720 h:480 fmt:yuv420p -> w:480 h:352 fmt:yuv420p
flags:0xa0000004
[libx264 @ 0x8d5b2e0] Default settings detected, using medium profile
[libx264 @ 0x8d5b2e0] MB rate (19800000) > level limit (983040)
[libx264 @ 0x8d5b2e0] using cpu capabilities: MMX2 SSE2Fast SSSE3
FastShuffle SSE4.1 Cache64
[libx264 @ 0x8d5b2e0] profile High, level 5.1
[libx264 @ 0x8d5b2e0] 264 - core 104 - H.264/MPEG-4 AVC codec - Copyleft
2003-2010 - 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=1 sliced_threads=0
nr=0 decimate=1 interlaced=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=300 ratetol=1.0 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4
ip_ratio=1.40 aq=1:1.00
Output #0, flv, to 'test.flv':
Metadata:
major_brand : 3gp4
minor_version : 768
compatible_brands: 3gp43gp6
encoder : Lavf53.0.3
Stream #0.0(eng): Video: libx264, yuv420p, 480x352, q=2-31, 300 kb/s,
1k tbn, 30k tbc
Stream #0.1(eng): Audio: libfaac, 16000 Hz, mono, s16, 64 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Stream #0.0 -> #0.1
Press [q] to stop encoding
frame= 2818 fps= 32 q=29.0 Lsize= 3887kB time=94.38 bitrate=
337.4kbits/s
video:3480kB audio:327kB global headers:0kB muxing overhead 2.100497%
frame I:12 Avg QP:20.98 size: 10995
[libx264 @ 0x8d5b2e0] frame P:737 Avg QP:21.90 size: 3100
[libx264 @ 0x8d5b2e0] frame B:2069 Avg QP:25.42 size: 554
[libx264 @ 0x8d5b2e0] consecutive B-frames: 0.1% 2.1% 8.0% 89.8%
[libx264 @ 0x8d5b2e0] mb I I16..4: 18.5% 54.2% 27.3%
[libx264 @ 0x8d5b2e0] mb P I16..4: 1.9% 1.2% 0.2% P16..4: 49.5% 15.9%
9.3% 0.0% 0.0% skip:22.0%
[libx264 @ 0x8d5b2e0] mb B I16..4: 0.1% 0.0% 0.0% B16..8: 45.8% 2.1%
0.2% direct: 0.6% skip:51.2% L0:42.0% L1:54.6% BI: 3.4%
[libx264 @ 0x8d5b2e0] final ratefactor: 23.23
[libx264 @ 0x8d5b2e0] 8x8 transform intra:41.9% inter:69.4%
[libx264 @ 0x8d5b2e0] coded y,uvDC,uvAC intra: 33.5% 58.4% 18.3% inter:
7.2% 13.0% 0.1%
[libx264 @ 0x8d5b2e0] i16 v,h,dc,p: 32% 14% 9% 44%
[libx264 @ 0x8d5b2e0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 9% 41% 3% 5%
7% 4% 5% 4%
[libx264 @ 0x8d5b2e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 10% 19% 5% 7%
9% 5% 6% 4%
[libx264 @ 0x8d5b2e0] i8c dc,h,v,p: 61% 12% 23% 4%
[libx264 @ 0x8d5b2e0] Weighted P-Frames: Y:0.9%
[libx264 @ 0x8d5b2e0] ref P L0: 58.7% 10.7% 22.5% 8.0% 0.0%
[libx264 @ 0x8d5b2e0] ref B L0: 87.6% 9.9% 2.5%
[libx264 @ 0x8d5b2e0] ref B L1: 93.8% 6.2%
[libx264 @ 0x8d5b2e0] kb/s:301.65
Here is output with MP4 muxer. Note that I aborted the encode after a few
seconds - it's obvious it's not going to work right when you see that the
"dup" number on the progress line is shooting up into the thousands almost
immediately.
$ ffmpeg -y -i 2423.mp4 -s 480x352 -b 300k -bt 300k -acodec libfaac
-vcodec libx264 test.mp4
ffmpeg version UNKNOWN, Copyright (c) 2000-2011 the FFmpeg developers
built on May 5 2011 11:01:27 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
configuration: --enable-gpl --enable-libfaac --enable-libmp3lame
--enable-libx264 --enable-pthreads --enable-static --disable-shared
--disable-network --enable-nonfree
libavutil 51. 2. 0 / 51. 2. 0
libavcodec 53. 3. 0 / 53. 3. 0
libavformat 53. 0. 3 / 53. 0. 3
libavdevice 53. 0. 0 / 53. 0. 0
libavfilter 2. 4. 0 / 2. 4. 0
libswscale 0. 14. 0 / 0. 14. 0
Seems stream 1 codec frame rate differs from container frame rate:
60000.00 (60000/1) -> 30000.00 (60000/2)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2423.mp4':
Metadata:
major_brand : 3gp4
minor_version : 768
compatible_brands: 3gp43gp6
Duration: 00:02:55.63, start: 0.000000, bitrate: 3493 kb/s
Stream #0.0(eng): Audio: aac, 16000 Hz, mono, s16, 61 kb/s
Stream #0.1(eng): Video: h264 (Baseline), yuv420p, 720x480, 3429 kb/s,
29.83 fps, 30k tbr, 30k tbn, 60k tbc
[buffer @ 0x8d5d5e0] w:720 h:480 pixfmt:yuv420p
[scale @ 0x8d5c940] w:720 h:480 fmt:yuv420p -> w:480 h:352 fmt:yuv420p
flags:0xa0000004
[libx264 @ 0x8d5b2e0] Default settings detected, using medium profile
[libx264 @ 0x8d5b2e0] MB rate (19800000) > level limit (983040)
[libx264 @ 0x8d5b2e0] using cpu capabilities: MMX2 SSE2Fast SSSE3
FastShuffle SSE4.1 Cache64
[libx264 @ 0x8d5b2e0] profile High, level 5.1
[libx264 @ 0x8d5b2e0] 264 - core 104 - H.264/MPEG-4 AVC codec - Copyleft
2003-2010 - 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=1 sliced_threads=0
nr=0 decimate=1 interlaced=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=300 ratetol=1.0 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4
ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'test.mp4':
Metadata:
major_brand : 3gp4
minor_version : 768
compatible_brands: 3gp43gp6
encoder : Lavf53.0.3
Stream #0.0(eng): Video: libx264, yuv420p, 480x352, q=2-31, 300 kb/s,
60k tbn, 30k tbc
Stream #0.1(eng): Audio: libfaac, 16000 Hz, mono, s16, 64 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Stream #0.0 -> #0.1
Press [q] to stop encoding
frame= 2010 fps=180 q=51.0 Lsize= 87kB time=0.07
bitrate=10641.9kbits/s dup=2007 drop=0
video:55kB audio:0kB global headers:0kB muxing overhead 58.719718%
frame I:9 Avg QP:36.41 size: 2067
[libx264 @ 0x8d5b2e0] frame P:507 Avg QP:50.98 size: 23
[libx264 @ 0x8d5b2e0] frame B:1494 Avg QP:51.00 size: 17
[libx264 @ 0x8d5b2e0] consecutive B-frames: 0.4% 0.0% 0.0% 99.6%
[libx264 @ 0x8d5b2e0] mb I I16..4: 38.8% 54.4% 6.8%
[libx264 @ 0x8d5b2e0] mb P I16..4: 0.0% 0.0% 0.0% P16..4: 0.1% 0.1%
0.0% 0.0% 0.0% skip:99.8%
[libx264 @ 0x8d5b2e0] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.1% 0.0%
0.0% direct: 0.0% skip:99.9% L0:33.9% L1:66.1% BI: 0.0%
[libx264 @ 0x8d5b2e0] final ratefactor: 71.63
[libx264 @ 0x8d5b2e0] 8x8 transform intra:54.3% inter:85.7%
[libx264 @ 0x8d5b2e0] coded y,uvDC,uvAC intra: 19.9% 27.4% 3.4% inter:
0.0% 0.0% 0.0%
[libx264 @ 0x8d5b2e0] i16 v,h,dc,p: 54% 19% 7% 19%
[libx264 @ 0x8d5b2e0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 40% 5% 34% 4% 3%
5% 2% 5% 2%
[libx264 @ 0x8d5b2e0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 39% 8% 25% 7% 5%
6% 2% 6% 1%
[libx264 @ 0x8d5b2e0] i8c dc,h,v,p: 80% 3% 16% 1%
[libx264 @ 0x8d5b2e0] Weighted P-Frames: Y:0.0%
[libx264 @ 0x8d5b2e0] ref P L0: 89.2% 0.5% 9.9% 0.5%
[libx264 @ 0x8d5b2e0] ref B L0: 99.2% 0.8%
[libx264 @ 0x8d5b2e0] kb/s:6615.40
Received signal 2: terminating.
Just for kicks, I tried it with .avi output and it works fine there as
well. It must be the mp4 muxer... I'll try to figure out what change
caused this. I don't really know how to use git but I guess it's time to
learn!
--
Ticket URL: <http://ffmpeg.org/trac/ffmpeg/ticket/187#comment:2>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list