Ffmpeg 在视频中添加新音频(混合2个音频)

Ffmpeg 在视频中添加新音频(混合2个音频)

我想在特定时长内为视频添加音频。现在,在预期时长之前/之后,应该播放视频的原始音频;而在预期时长内,只应播放插入的音频。

我看见叠加音频但它会覆盖原始音频。我已经尝试过了,-itsoffset但它会静音剩余的音频。

以下是我想要做的事情的图形描述 我想做的事

任何帮助都将受到赞赏。

答案1

使用atrimasetpts, 和concat过滤器:

ffmpeg -i video.mkv -i audio.mp3 -filter_complex \
"[0:a]atrim=end=12,asetpts=PTS-STARTPTS[aud1]; \
 [1:a]atrim=30:42,asetpts=PTS-STARTPTS[aud2]; \
 [0:a]atrim=start=24,asetpts=PTS-STARTPTS[aud3]; \
 [aud1][aud2][aud3]concat=n=3:v=0:a=1[aout]" \
-map 0:v -map "[aout]" -c:v copy -c:a libfdk_aac output.mp4
  • 第一个atrim从第一个输入获取前 12 秒的音频(video.mkv)。
  • 第二个atrim从第二个输入中获取 30-42 秒(audio.mp3)。
  • 第三个atrim从第一个输入获取第 24 秒的音频(video.mkv)。
  • concat然后将这些片段合并为一个音频流。
  • 视频流已复制而不是在这个例子中重新编码。
  • 如果没有,asetpts我就会遇到缓冲区队列溢出,导致输出“不稳定”。请参阅atrim文档了解更多信息。

相关内容