我使用 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