![使用 FFMPEG 为视频添加配乐](https://linux22.com/image/1373290/%E4%BD%BF%E7%94%A8%20FFMPEG%20%E4%B8%BA%E8%A7%86%E9%A2%91%E6%B7%BB%E5%8A%A0%E9%85%8D%E4%B9%90.png)
简而言之,我想将视频中的音频与音乐源(mp3,aac......)合并。
我有一个带声音的视频文件。我想给它添加配乐,这样输出文件的音频就有语音和音乐了。
我寻找了几种解决方案,但只找到了如何在 audio1 和 audio2 之间添加另一个音轨作为选择的方法。这是我找到的一个示例:
ffmpeg -i input.mp4 -i music.mp3 -map 0 -map 1 \
-vcodec copy -acodec copy merged.mp4
另外,我希望音乐适合视频长度(我认为该-shortest
选项可以实现这一点,请确认)。
非常感谢 !
答案1
两个立体声输入至一个立体声输出
您可以使用amerge
音频过滤器将两个音频流合并为一个流,然后pan
音频过滤器将得到的 4 个通道合并为 2 个通道(立体声)。假设您的两个输入都是立体声:
ffmpeg -i input.mp4 -i music.mp3 -codec:v copy -codec:a aac -b:a 192k \
-strict experimental -filter_complex "amerge,pan=stereo:c0<c0+c2:c1<c1+c3" \
-shortest output.mp4
因为你只想操纵音频
-codec:v copy
用于流复制视频。-strict experimental
或-strict -2
需要使用原生 FFmpeg AAC 编码器。另请参阅FFmpeg 和 AAC 编码指南了解其他选项和示例。pan 语法
c0<c0+c2:c1<c1+c3
可以翻译为“对于输出通道c0
(左通道),将两个输入的左通道(输入通道c0
和c2
)合并,对于输出通道c1
(右通道),将两个输入的右通道(输入通道c1
和c3
)合并”。-shortest
将使输出持续时间与最短输入的持续时间相同。
两个单声道输入至一个立体声输出
这比较简单,但只需将每个输入的单声道复制到输出的每个通道:
ffmpeg -i input.mp4 -i music.mp3 -codec:v copy -codec:a aac -b:a 192k \
-strict experimental -ac 2 -shortest output.mp4