[FFmpeg-user] ffmpeg discard all frames of some video files when using a video filter.
Gabriele Greco
gabriele.greco at hudl.com
Wed May 5 17:54:02 EEST 2021
Hi guys, I'm having problems to process a set of video files encoded like the sample here:
https://cdn5.wyscout.com/get/testShort.mp4 (7MB)
... that can be reproduced and encoded, but NOT filtered.
This can be reproduced using the latest master ffmpeg as of today (just pulled and built before writing), but also with ffmpeg 4.3.x and 4.2.x.
Looking inside the sources it seems that for some reason ffmpeg is not able to correctly initialize the filter timebase (ffmpeg.c / adjust_frame_pts_to_encoder_tb ) and for that reason it "refuses" to encode all the frames.
I think the culprit is the value of TBN that ffmpeg (and ffprobe) report for this video. Since I'm not the one producing those videos, there is a way to force the filter time base from the command line so that I can process them?
The only way I found to handle those files is to do an additional encoding step at an high bitrate without filtering and then apply my filters to the output of the previous step, but that doubles the processing time...
Here is the full uncut log of a working encoding and the one (with yadif) that does not work.
WITHOUT FILTERING (everything works):
iMac-2 $ ./ffmpeg -i ~/Desktop/testShort.mp4 out.mp4
ffmpeg version N-102394-g4fda451c9f Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.29)
configuration: --disable-lzma --prefix=/usr/local/sdk/darwin-x64 --enable-libx264 --enable-libfdk-aac --enable-nonfree --enable-gpl --enable-libopus --enable-libvpx --enable-libvorbis --enable-pic --disable-sdl2
libavutil 57. 0.100 / 57. 0.100
libavcodec 59. 0.100 / 59. 0.100
libavformat 59. 0.101 / 59. 0.101
libavdevice 59. 0.100 / 59. 0.100
libavfilter 8. 0.101 / 8. 0.101
libswscale 6. 0.100 / 6. 0.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/gabry/Desktop/testShort.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.29.100
Duration: 00:00:10.00, start: 0.000000, bitrate: 6098 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 6095 kb/s, 25 fps, 25 tbr, 1951391039.00 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x7fcb0b40db40] using SAR=1/1
[libx264 @ 0x7fcb0b40db40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fcb0b40db40] profile High, level 4.0, 4:2:0, 8-bit
[libx264 @ 0x7fcb0b40db40] 264 - core 161 r3046 fa26446 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - 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=6 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=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf59.0.101
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 12800 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc59.0.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame= 250 fps= 38 q=-1.0 Lsize= 5566kB time=00:00:09.88 bitrate=4614.9kbits/s speed=1.49x
video:5562kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.061817%
[libx264 @ 0x7fcb0b40db40] frame I:1 Avg QP:20.09 size:274772
[libx264 @ 0x7fcb0b40db40] frame P:122 Avg QP:21.47 size: 38300
[libx264 @ 0x7fcb0b40db40] frame B:127 Avg QP:27.71 size: 5888
[libx264 @ 0x7fcb0b40db40] consecutive B-frames: 27.2% 12.0% 9.6% 51.2%
[libx264 @ 0x7fcb0b40db40] mb I I16..4: 6.8% 41.2% 52.1%
[libx264 @ 0x7fcb0b40db40] mb P I16..4: 0.2% 1.6% 0.5% P16..4: 37.3% 7.5% 6.9% 0.0% 0.0% skip:45.9%
[libx264 @ 0x7fcb0b40db40] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 37.1% 1.8% 0.5% direct: 0.5% skip:60.0% L0:42.3% L1:49.8% BI: 7.9%
[libx264 @ 0x7fcb0b40db40] 8x8 transform intra:61.7% inter:44.9%
[libx264 @ 0x7fcb0b40db40] coded y,uvDC,uvAC intra: 90.7% 77.6% 23.5% inter: 14.2% 10.4% 0.8%
[libx264 @ 0x7fcb0b40db40] i16 v,h,dc,p: 3% 34% 16% 47%
[libx264 @ 0x7fcb0b40db40] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 27% 26% 5% 5% 4% 9% 4% 10%
[libx264 @ 0x7fcb0b40db40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 31% 17% 5% 6% 5% 8% 5% 8%
[libx264 @ 0x7fcb0b40db40] i8c dc,h,v,p: 52% 28% 16% 4%
[libx264 @ 0x7fcb0b40db40] Weighted P-Frames: Y:1.6% UV:0.0%
[libx264 @ 0x7fcb0b40db40] ref P L0: 80.2% 8.2% 8.9% 2.8% 0.0%
[libx264 @ 0x7fcb0b40db40] ref B L0: 94.9% 4.4% 0.7%
[libx264 @ 0x7fcb0b40db40] ref B L1: 97.5% 2.5%
[libx264 @ 0x7fcb0b40db40] kb/s:4556.15
WITH FILTERING (all frames are dropped):
./ffmpeg -y -i ~/Desktop/testShort.mp4 -vf yadif out.mp4
ffmpeg version N-102394-g4fda451c9f Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.29)
configuration: --disable-lzma --prefix=/usr/local/sdk/darwin-x64 --enable-libx264 --enable-libfdk-aac --enable-nonfree --enable-gpl --enable-libopus --enable-libvpx --enable-libvorbis --enable-pic --disable-sdl2
libavutil 57. 0.100 / 57. 0.100
libavcodec 59. 0.100 / 59. 0.100
libavformat 59. 0.101 / 59. 0.101
libavdevice 59. 0.100 / 59. 0.100
libavfilter 8. 0.101 / 8. 0.101
libswscale 6. 0.100 / 6. 0.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/gabry/Desktop/testShort.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.29.100
Duration: 00:00:10.00, start: 0.000000, bitrate: 6098 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 6095 kb/s, 25 fps, 25 tbr, 1951391039.00 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x7f9a0f505d40] using SAR=1/1
[libx264 @ 0x7f9a0f505d40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7f9a0f505d40] profile High, level 4.0, 4:2:0, 8-bit
[libx264 @ 0x7f9a0f505d40] 264 - core 161 r3046 fa26446 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - 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=6 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=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'out.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf59.0.101
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 12800 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc59.0.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame= 0 fps=0.0 q=0.0 Lsize= 0kB time=00:00:00.00 bitrate=N/A dup=0 drop=250 speed= 0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
More information about the ffmpeg-user
mailing list