我通过此命令从视频中删除了许多重复的帧(并完全删除了音频)
ffmpeg -i scene.mkv -vf mpdecimate,setpts=N/FRAME_RATE/TB -map:v 0 scene3.mp4
(由Mulvya的answer,再次感谢)。
生成的视频正常,但总持续时间不会改变 - 原始视频的最后一帧被冻结以填充剩余时间(播放视频时)。
是否有某种方法可以修剪视频,使其在最后一帧完成?
答案 0 :(得分:3)
地图语法应为
ffmpeg -i scene.mkv -vf mpdecimate,setpts=N/FRAME_RATE/TB -map 0:v scene3.mp4
答案 1 :(得分:1)
我尝试了 Gyan 的解决方案,但它忽略了音频。我还尝试了多种其他解决方案,但似乎都没有奏效。但是,有一个 mpdecimate_trim 存储库做得很好。它基本上列出了要删除的所有帧(使用 re.sub
),然后创建一个复杂的过滤器,通过拆分视频并仅包含没有重复帧的部分来修剪视频中的所有这些帧(以及相应的音频)。
不过,我确实需要调整代码中的一些选项。例如,在 mpdecimate
中,我必须更改这一行:
mpdecimate_trim.py
我必须更积极地检测重复项,因此我将 dframes2 = get_dframes(ffmpeg(True, "-vf", "mpdecimate=hi=576", "-loglevel", "debug", "-f", "null", "-").stderr)
选项更改为 mpdecimate