覆盖在开头

覆盖在开头

我使用 OBS 工作室和麦克风录制了一个讲座

但我想用另一个视频替换该视频的某些部分,而无需重新编码或触及音频

另一个视频也是用 OBS Studio 以相同的设置录制的

如果需要编码,我也接受

那么适当的命令是什么ffmpeg

这里的文件提供了更清晰的例子

  • a.mkv:77分钟

  • b.mkv :相同格式,时长 2 分钟

  • c.mkv :我想用 - - b.mkv 替换 a.mkv 的 00.23.00 - 00.25.00 部分,但不更改 a.mkv 的音频文件

无需编码或重新编码即可实现这一点吗?

答案1

使用设定点延迟时间戳和覆盖过滤器对视频进行分层。音频流已复制因此不受影响。

覆盖在开头

从头开始b.mkv覆盖的示例:a.mkv

ffmpeg -i a.mkv -i b.mkv -filter_complex "[0:v][1:v]overlay=eof_action=pass[v]" -map "[v]" -map 0:a -c:a copy output.mkv

在特定时间戳开始覆盖

从 00:23:00(23 分钟)开始叠加b.mkv的示例:a.mkv

ffmpeg -i a.mkv -i b.mkv -filter_complex "[1:v]setpts=PTS+23*60/TB[bvideo];[0:v][bvideo]overlay=eof_action=pass[v]" -map "[v]" -map 0:a -c:a copy output.mkv

与上面相同,但限制覆盖持续时间

b.mkv这仅显示从00:23:00(23 分钟)开始的0-30 秒:

ffmpeg -i a.mkv -i b.mkv -filter_complex "[1:v]setpts=PTS+23*60/TB[bvideo];[0:v][bvideo]overlay=eof_action=pass:enable='lte(t,30)'[v]" -map "[v]" -map 0:a -c:a copy output.mkv

相关内容