它可能是一个 duplicate question
,但没有找到任何 helpful answer
。
我有 2 audio files
和 1 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
任何帮助将不胜感激!
答案 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