使用FFMPEG将音轨添加到视频中


2

简而言之,我想将视频中的音频与音乐源(mp3,aac ...)合并。

我有一个带声音的视频文件。我想为它添加一个音轨,以便输出文件中的音频具有语音和音乐。

我找了几个解决方案,但我发现的是如何添加另一个音轨作为audio1和audio2之间的选择。这是我发现的一个示例:

ffmpeg -i input.mp4 -i music.mp3 -map 0 -map 1 \
   -vcodec copy -acodec copy merged.mp4

此外,我希望音乐适合视频长度(我认为 -shortest 选项可以实现这一点,请确认)。

非常感谢 !


您想将两个输入音频流合并为一个组合输出流吗?使用ffmpeg可以实现这一点。请显示命令的ffmpeg控制台输出。它将允许我做一个准确的示例命令。
llogan

我有一个带图像和声音的视频(input.mp4)。我想为这个视频添加一个音轨(music.mp3)。但我希望input.mp4中的音频与music.mp3合并并保留input.mp4中的图像。
Nicolas Sursock

Answers:


2

两个立体声输入到一个立体声输出

你可以使用 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编码指南 其他选项和示例。

  • 泛语法 c0<c0+c2:c1<c1+c3 可以翻译为“输出通道” c0 (左声道),组合两个输入的左声道(输入声道) c0c2 ),以及输出通道 c1 (右声道),组合两个输入的右声道(输入声道) c1c3 )”。

  • -shortest 将使输出持续时间与最短输入的持续时间相同。

两个单声道输入到一个立体声输出

这更容易,但只需将每个输入的单声道复制到输出的每个声道:

ffmpeg -i input.mp4 -i music.mp3 -codec:v copy -codec:a aac -b:a 192k \
-strict experimental -ac 2 -shortest output.mp4

另见

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.