ffmpeg 将多个 mp3 文件添加到特定位置的 mp4 视频

时间:2021-02-13 15:28:12

标签: ffmpeg mp3 mp4

它可能是一个 duplicate question,但没有找到任何 helpful answer

我有 2 audio files1 mp4 video file。想要在特定时间将 2 audio files 添加到 mp4 video

例如:

视频文件:

  • input.mp4(2 分钟视频)

音频文件:

音频文件 1:

  • test_0:01.mp3(15 秒音频文件)我想在 mp4 视频的 0:01 位置插入此文件

音频文件 2:

  • test_0:20.mp3(15 秒音频文件)我想在 mp4 视频的 0:20 位置插入此文件

我用 following

尝试了 offset 命令

它只是在视频文件的 0:01 位置插入 test_0:01.mp3

但是 test_0:20.mp3 没有被插入到 0:020 位置为这个文件 mute 获取 no audio

ffmpeg -i input.mp4 -itsoffset 01 -i test_0:01.mp3  -itsoffset 20 -i test_0:20.mp3 -c:v copy -map 0:v:0 -map 1:a -map 2:a -c:a aac -b:a 192k output.mp4

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您的命令在 MP4 文件中创建两个音轨。如果您查看视频播放器,您可以在两个音轨之间进行选择(通常用于选择不同的音频语言)。

为什么

这是因为每个 -map 参数都会创建一个新流。在您的示例中,一个带有两个音轨的视频。

解决方案

改用音频过滤器 amix。对同一过滤器链中的延迟也使用过滤器 adelay 以获得最佳结果。

ffmpeg -i input.mp4 -i test_0:01.mp3 -i test_0:20.mp3 -filter_complex "[1:a]adelay=1s:all=1[a1];[2:a]adelay=20s:all=1[a2];[a1][a2]amix=inputs=2[amixout]" -map 0:v:0 -map "[amixout]" -c:v copy -c:a aac -b:a 192k output.mp4
相关问题