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

ffmpeg add multiple mp3 files to mp4 video at particular position

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

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

例如:

视频文件:

音频文件:

音频文件 1:

音频文件 2:

我用 offset

尝试了 following 命令

只是在视频文件的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

任何帮助将不胜感激!

您的命令会在 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