[FFmpeg-user] Removing duplicate frames, libx264, mpdecimate
llee040 at sbcglobal.net
llee040 at sbcglobal.net
Fri Jun 25 01:55:55 EEST 2021
Hi,
I’m a transcoding hobbyist who is trying to use mpdecimate to remove a few sporadic duplicate frames.
At "https://kodintent.wordpress.com/2020/04/19/ffmpeg-mpdecimate-parameters/ <https://kodintent.wordpress.com/2020/04/19/ffmpeg-mpdecimate-parameters/>“ I discovered that the default parameters for the video filter “mpdecimate" are hi = 64*12 (768), lo=64*5 (320), frac=0.33 with no limit on the number of consecutive duplicates that will be matched ("mpdecimate=max=0”). I’m transcoding an .mp4 file for the purpose of removing the one or the other of a pair of duplicate frames. My example file consists of 48 frames (2 seconds of 24 fps video), of which frames 38 and 39 have visibly imperceptible differences. If I alternate
"-vf mpdecimate”
with
“-vf mpdecimate=hi=64*12:lo=64*5:frac=0.33”
(which appears to me to be the logical equivalent using editable values), only the first instance of the command will match and remove the duplicate frame.
Why? Has something changed since the webpage was published, is the information simply incorrect, or am I doing something else wrong?
Should I be using an altogether different method of eliminating duplicates?
My first instance of the transcoding command, including its results:
ffmpeg -i input.mp4 -vf mpdecimate -q:v 1 -copytb 1 -vsync vfr -c:a copy output.mp4
ffmpeg version N-102754-g604924a069 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.5 (clang-1205.0.22.9)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-604924a_1 --enable-shared --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libaom --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-demuxer=dash --disable-libjack --disable-indev=jack --enable-opencl --enable-videotoolbox --disable-htmlpages
libavutil 57. 0.100 / 57. 0.100
libavcodec 59. 1.101 / 59. 1.101
libavformat 59. 3.100 / 59. 3.100
libavdevice 59. 0.100 / 59. 0.100
libavfilter 8. 0.102 / 8. 0.102
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 ‘input.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf59.3.100
Duration: 00:00:02.04, start: 0.008000, bitrate: 3333 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x800 [SAR 1:1 DAR 12:5], 2748 kb/s, 24 fps, 24 tbr, 12288 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Side data:
audio service type: main
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[libx264 @ 0x7fa428418b80] -qscale is ignored, -crf is recommended.
[libx264 @ 0x7fa428418b80] using SAR=1/1
[libx264 @ 0x7fa428418b80] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fa428418b80] profile High, level 4.0, 4:2:0, 8-bit
[libx264 @ 0x7fa428418b80] 264 - core 163 r3060 5db6aa6 - 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=18 lookahead_threads=3 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=24 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
[mp4 @ 0x7fa428417bc0] track 1: codec frame size is not set
Output #0, mp4, to ‘output.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf59.3.100
Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x800 [SAR 1:1 DAR 12:5], q=2-31, 24 fps, 12288 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc59.1.101 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
Stream #0:1(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, 5.1(side), fltp, 640 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Side data:
audio service type: main
frame= 47 fps=0.0 q=-1.0 Lsize= 618kB time=00:00:02.01 bitrate=2509.6kbits/s speed=2.66x
video:458kB audio:158kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.422533%
[libx264 @ 0x7fa428418b80] frame I:1 Avg QP:20.53 size: 48412
[libx264 @ 0x7fa428418b80] frame P:22 Avg QP:20.70 size: 14583
[libx264 @ 0x7fa428418b80] frame B:24 Avg QP:23.27 size: 4107
[libx264 @ 0x7fa428418b80] consecutive B-frames: 6.4% 72.3% 12.8% 8.5%
[libx264 @ 0x7fa428418b80] mb I I16..4: 17.6% 76.3% 6.1%
[libx264 @ 0x7fa428418b80] mb P I16..4: 6.6% 11.3% 0.1% P16..4: 41.8% 6.9% 2.9% 0.0% 0.0% skip:30.4%
[libx264 @ 0x7fa428418b80] mb B I16..4: 0.4% 0.6% 0.0% B16..8: 31.3% 1.0% 0.1% direct: 1.1% skip:65.5% L0:45.0% L1:53.9% BI: 1.1%
[libx264 @ 0x7fa428418b80] 8x8 transform intra:65.3% inter:90.9%
[libx264 @ 0x7fa428418b80] coded y,uvDC,uvAC intra: 23.3% 43.0% 6.1% inter: 8.1% 11.8% 0.2%
[libx264 @ 0x7fa428418b80] i16 v,h,dc,p: 40% 25% 26% 9%
[libx264 @ 0x7fa428418b80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 18% 48% 2% 2% 2% 2% 2% 2%
[libx264 @ 0x7fa428418b80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 25% 15% 6% 6% 4% 5% 5% 5%
[libx264 @ 0x7fa428418b80] i8c dc,h,v,p: 66% 15% 17% 3%
[libx264 @ 0x7fa428418b80] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fa428418b80] ref P L0: 76.5% 14.1% 7.1% 2.3%
[libx264 @ 0x7fa428418b80] ref B L0: 94.6% 4.4% 1.0%
[libx264 @ 0x7fa428418b80] ref B L1: 99.4% 0.6%
[libx264 @ 0x7fa428418b80] kb/s:1871.22
My second instance of the command, including results:
ffmpeg -i input.mp4 -vf mpdecimate=hi=64*12:lo=64*5:frac=0.33 -q:v 1 -copytb 1 -vsync vfr -c:a copy output.mp4
zsh: no matches found: mpdecimate=hi=64*12:lo=64*5:frac=0.33
Thanks.
Laine Lee
More information about the ffmpeg-user
mailing list