使用 FFmpeg 在指定时间将起始帧替换为一个

使用 FFmpeg 在指定时间将起始帧替换为一个

我正在编辑演示文稿的视频(幻灯片的截屏,因此内容很少变化)。视频应该按章节划分。

问题在于,演讲者开始讲述下一章,但 2-3 秒内却展示一张旧幻灯片,甚至滚动浏览幻灯片以寻找正确的幻灯片。

我想保留音频原样,但将起始帧(从 0 到 3 秒)替换为视频第 3 秒的帧。

我可以通过分割频道和替换视频在可视化编辑器中做到这一点,但我想使其自动化。

我如何使用 FFmpeg 实现我的目标?

答案1

它很简单*

ffmpeg -i in.mp4 -vf trim=X -c:a copy out.mp4

X 是您要在开始时克隆的帧的时间戳。从 0 到 X 的所有帧都将被该帧替换。

*适用于 MP4 等输出格式,其中 ffmpeg 假设帧速率恒定。对于可变帧速率复用,如 Matroska,使用

ffmpeg -i in.mp4 -vf trim=X,setpts='if(eq(N,0),0,PTS)' -c:a copy out.mkv

相关内容