[FFmpeg-trac] #5493(avfilter:new): incomplete x264 MB tree with framerate filter
FFmpeg
trac at avcodec.org
Fri Apr 29 18:43:38 CEST 2016
#5493: incomplete x264 MB tree with framerate filter
-------------------------------------+-------------------------------------
Reporter: blacktrash | Type: defect
Status: new | Priority: normal
Component: avfilter | Version: git-
Keywords: framerate | master
libx264 | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
Depending on (weird) input frame rates and chosen framerate filter frame
rate and other circumstances, the framerate filter results in an
incomplete MB tree 1st pass stats file.
How to reproduce:
{{{
$ ffprobe -select_streams v -show_entries
stream=r_frame_rate,avg_frame_rate oldphone.mp4
ffprobe version N-79691-g66dd21d Copyright (c) 2007-2016 the FFmpeg
developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --enable-gpl --enable-nonfree --disable-ffserver
--enable-shared --enable-openssl --enable-libspeex --enable-libopus
--enable-libfdk-aac --enable-libx265 --enable-libx264 --enable-libxvid
--enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis
--enable-libvpx --enable-libvidstab --extra-cflags=-I/sw/include --extra-
libs=-L/sw/lib
libavutil 55. 23.100 / 55. 23.100
libavcodec 57. 38.100 / 57. 38.100
libavformat 57. 34.103 / 57. 34.103
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 44.100 / 6. 44.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'oldphone.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2016-04-24 09:48:33
location : +60.4916+022.2685/
location-eng : +60.4916+022.2685/
com.android.version: 6.0.1
Duration: 00:00:52.12, start: 0.000000, bitrate: 15880 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1920x1080, 15715 kb/s, SAR 1:1 DAR 16:9, 25.48 fps, 90k tbr, 90k tbn
(default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : VideoHandle
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 196 kb/s (default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : SoundHandle
[STREAM]
r_frame_rate=180000/2
avg_frame_rate=14906250/584969
[/STREAM]
$ ffmpeg -i oldphone.mp4 -filter:v framerate=30,scale=640:360 -b:v 500k
-pass 1 -y
test.mp4
ffmpeg version N-79691-g66dd21d Copyright (c) 2000-2016 the FFmpeg
developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --enable-gpl --enable-nonfree --disable-ffserver
--enable-shared --enable-openssl --enable-libspeex --enable-libopus
--enable-libfdk-aac --enable-libx265 --enable-libx264 --enable-libxvid
--enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis
--enable-libvpx --enable-libvidstab --extra-cflags=-I/sw/include --extra-
libs=-L/sw/lib
libavutil 55. 23.100 / 55. 23.100
libavcodec 57. 38.100 / 57. 38.100
libavformat 57. 34.103 / 57. 34.103
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 44.100 / 6. 44.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'oldphone.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2016-04-24 09:48:33
location : +60.4916+022.2685/
location-eng : +60.4916+022.2685/
com.android.version: 6.0.1
Duration: 00:00:52.12, start: 0.000000, bitrate: 15880 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1920x1080, 15715 kb/s, SAR 1:1 DAR 16:9, 25.48 fps, 90k tbr, 90k tbn
(default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : VideoHandle
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 196 kb/s (default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : SoundHandle
[Parsed_framerate_0 @ 0x7fccb2700000] time base:1/90000 -> 1/90000 exact:1
[Parsed_framerate_0 @ 0x7fccb2700000] fps -> fps:30/1 scene score:7.000000
interpolate start:15 end:240
[libx264 @ 0x7fccb2812e00] using SAR=1/1
[libx264 @ 0x7fccb2812e00] using cpu capabilities: MMX2 SSE2Fast SSSE3
SSE4.2 AVX
[libx264 @ 0x7fccb2812e00] profile Main, level 3.0
[libx264 @ 0x7fccb2812e00] 264 - core 148 r2694 3b70645 - H.264/MPEG-4 AVC
codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options:
cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0 me=dia subme=2 psy=1
psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0
cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=11
lookahead_threads=2 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=500
ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[mp4 @ 0x7fccb2811c00] Using AVStream.codec to pass codec parameters to
muxers is deprecated, use AVStream.codecpar instead.
Last message repeated 1 times
Output #0, mp4, to 'test.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
com.android.version: 6.0.1
location : +60.4916+022.2685/
location-eng : +60.4916+022.2685/
encoder : Lavf57.34.103
Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p,
640x360 [SAR 1:1 DAR 16:9], q=2-31, 500 kb/s, 30 fps, 15360 tbn (default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : VideoHandle
encoder : Lavc57.38.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/500000 buffer size: 0 vbv_delay: -1
Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz,
stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : SoundHandle
encoder : Lavc57.38.100 aac
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
frame= 1559 fps=137 q=-1.0 Lsize= 3989kB time=00:00:52.12 bitrate=
627.0kbits/s speed=4.58x
video:3119kB audio:813kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 1.448805%
[libx264 @ 0x7fccb2812e00] frame I:12 Avg QP:24.46 size: 8829
[libx264 @ 0x7fccb2812e00] frame P:419 Avg QP:26.64 size: 4157
[libx264 @ 0x7fccb2812e00] frame B:1128 Avg QP:29.56 size: 1193
[libx264 @ 0x7fccb2812e00] consecutive B-frames: 1.9% 3.0% 6.2% 89.0%
[libx264 @ 0x7fccb2812e00] mb I I16..4: 49.9% 0.0% 50.1%
[libx264 @ 0x7fccb2812e00] mb P I16..4: 23.3% 0.0% 0.0% P16..4: 49.3%
0.0% 0.0% 0.0% 0.0% skip:27.3%
[libx264 @ 0x7fccb2812e00] mb B I16..4: 3.4% 0.0% 0.0% B16..8: 19.2%
0.0% 0.0% direct: 7.1% skip:70.3% L0:35.8% L1:43.1% BI:21.2%
[libx264 @ 0x7fccb2812e00] final ratefactor: 23.53
[libx264 @ 0x7fccb2812e00] coded y,uvDC,uvAC intra: 45.2% 40.8% 10.6%
inter: 9.6% 8.2% 0.3%
[libx264 @ 0x7fccb2812e00] i16 v,h,dc,p: 74% 13% 7% 6%
[libx264 @ 0x7fccb2812e00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 43% 27% 10% 3%
3% 4% 3% 3% 5%
[libx264 @ 0x7fccb2812e00] i8c dc,h,v,p: 48% 16% 31% 6%
[libx264 @ 0x7fccb2812e00] Weighted P-Frames: Y:14.6% UV:3.6%
[libx264 @ 0x7fccb2812e00] kb/s:491.59
[aac @ 0x7fccb2814600] Qavg: 1142.250
$ ffmpeg -i oldphone.mp4 -filter:v framerate=30,scale=640:360 -b:v 500k
-pass 2 -y
test.mp4
ffmpeg version N-79691-g66dd21d Copyright (c) 2000-2016 the FFmpeg
developers
built with Apple LLVM version 7.0.2 (clang-700.1.81)
configuration: --enable-gpl --enable-nonfree --disable-ffserver
--enable-shared --enable-openssl --enable-libspeex --enable-libopus
--enable-libfdk-aac --enable-libx265 --enable-libx264 --enable-libxvid
--enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis
--enable-libvpx --enable-libvidstab --extra-cflags=-I/sw/include --extra-
libs=-L/sw/lib
libavutil 55. 23.100 / 55. 23.100
libavcodec 57. 38.100 / 57. 38.100
libavformat 57. 34.103 / 57. 34.103
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 44.100 / 6. 44.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'oldphone.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2016-04-24 09:48:33
location : +60.4916+022.2685/
location-eng : +60.4916+022.2685/
com.android.version: 6.0.1
Duration: 00:00:52.12, start: 0.000000, bitrate: 15880 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1920x1080, 15715 kb/s, SAR 1:1 DAR 16:9, 25.48 fps, 90k tbr, 90k tbn
(default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : VideoHandle
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
stereo, fltp, 196 kb/s (default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : SoundHandle
[Parsed_framerate_0 @ 0x7fd880600000] time base:1/90000 -> 1/90000 exact:1
[Parsed_framerate_0 @ 0x7fd880600000] fps -> fps:30/1 scene score:7.000000
interpolate start:15 end:240
[libx264 @ 0x7fd88082c000] using SAR=1/1
[libx264 @ 0x7fd88082c000] using cpu capabilities: MMX2 SSE2Fast SSSE3
SSE4.2 AVX
[libx264 @ 0x7fd88082c000] profile High, level 3.0
[libx264 @ 0x7fd88082c000] 264 - core 148 r2694 3b70645 - H.264/MPEG-4 AVC
codec - Copyleft 2003-2016 - 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=11
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=2pass mbtree=1 bitrate=500
ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 cplxblur=20.0 qblur=0.5
ip_ratio=1.40 aq=1:1.00
[mp4 @ 0x7fd880828c00] Using AVStream.codec to pass codec parameters to
muxers is deprecated, use AVStream.codecpar instead.
Last message repeated 1 times
Output #0, mp4, to 'test.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
com.android.version: 6.0.1
location : +60.4916+022.2685/
location-eng : +60.4916+022.2685/
encoder : Lavf57.34.103
Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p,
640x360 [SAR 1:1 DAR 16:9], q=2-31, 500 kb/s, 30 fps, 15360 tbn (default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : VideoHandle
encoder : Lavc57.38.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/500000 buffer size: 0 vbv_delay: -1
Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz,
stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2016-04-24 09:48:33
handler_name : SoundHandle
encoder : Lavc57.38.100 aac
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x7fd88082c000] Incomplete MB-tree stats file.08 bitrate=
615.3kbits/s speed=3.84x
Video encoding failed
[libx264 @ 0x7fd88082c000] frame I:12 Avg QP:24.36 size: 8693
[libx264 @ 0x7fd88082c000] frame P:416 Avg QP:26.93 size: 3900
[libx264 @ 0x7fd88082c000] frame B:1117 Avg QP:29.65 size: 1323
[libx264 @ 0x7fd88082c000] consecutive B-frames: 1.9% 3.0% 6.2% 88.9%
[libx264 @ 0x7fd88082c000] mb I I16..4: 18.8% 66.8% 14.3%
[libx264 @ 0x7fd88082c000] mb P I16..4: 4.2% 7.9% 2.1% P16..4: 43.2%
10.2% 4.5% 0.0% 0.0% skip:27.8%
[libx264 @ 0x7fd88082c000] mb B I16..4: 0.5% 0.7% 0.2% B16..8: 39.0%
3.8% 0.9% direct: 2.3% skip:52.7% L0:44.3% L1:49.4% BI: 6.4%
[libx264 @ 0x7fd88082c000] 8x8 transform intra:56.1% inter:83.0%
[libx264 @ 0x7fd88082c000] coded y,uvDC,uvAC intra: 57.8% 60.2% 23.1%
inter: 12.4% 11.7% 0.4%
[libx264 @ 0x7fd88082c000] i16 v,h,dc,p: 83% 6% 1% 10%
[libx264 @ 0x7fd88082c000] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 53% 13% 9% 2%
3% 5% 4% 5% 6%
[libx264 @ 0x7fd88082c000] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 44% 14% 7% 4%
6% 9% 6% 6% 5%
[libx264 @ 0x7fd88082c000] i8c dc,h,v,p: 48% 17% 27% 8%
[libx264 @ 0x7fd88082c000] Weighted P-Frames: Y:14.2% UV:3.1%
[libx264 @ 0x7fd88082c000] ref P L0: 50.1% 18.3% 20.3% 10.1% 1.1%
[libx264 @ 0x7fd88082c000] ref B L0: 85.2% 11.0% 3.8%
[libx264 @ 0x7fd88082c000] ref B L1: 94.9% 5.1%
[libx264 @ 0x7fd88082c000] kb/s:497.76
[aac @ 0x7fd88082d800] Qavg: 1142.847
[aac @ 0x7fd88082d800] 2 frames left in the queue on closing
Conversion failed!
}}}
This does not happen e.g. with libvpx; I presume because it collects less
data in its first pass stats.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/5493>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list