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

Blu*_*ord 3 audio video ffmpeg

我想在特定时长向视频添加音频。现在在预期持续时间之前/之后,视频的原始音频应该正在播放;并且在预期的持续时间内应该只播放插入的音频。

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

这是我想要做什么的图形描述 我想做的事

任何帮助表示赞赏。

llo*_*gan 5

Use the atrim, asetpts, and concat filters:

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
Run Code Online (Sandbox Code Playgroud)
  • 第一个atrim从第一个输入 ( video.mkv)获取前 12 秒的音频。
  • 第二个atrim从第二个输入 ( audio.mp3)获得 30-42 秒。
  • 第三个atrim从第一个输入 ( video.mkv)获取 24 秒结束的音频。
  • concat 然后将这些片段组合成一个音频流。
  • 在此示例中,视频被流复制而不是重新编码。
  • 没有asetpts我得到缓冲区队列溢出导致“生涩”输出。有关更多信息,请参阅atrim文档