通过命令行与背景音轨加入MP3

时间:2015-08-13 16:39:23

标签: linux audio command-line ffmpeg mp3

我已经开始使用两个命令行实用程序了。我使用ffmpeg将m4a转换为mp3,然后我使用mp3wrap将一些mp3组合成一个大的mp3。生成的文件是这样的:

BackgroundMusic.mp3 > Audio1.mp3 > Audio2.mp3

我需要更像

的东西
Audio1.mp3 > Audio2.mp3
|_____________________|
           |
  BackgroundMusic.mp3

背景音乐在后台连续播放的位置。很高兴能够改变每个音轨的音量。

有没有人知道像mp3wrap这样的命令行程序,但也可以添加背景音轨?

我将无法使用Audacity等GUI程序,因为所有这些都将在服务器上自动完成。

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以单独使用FFmpeg。

ffmpeg -i input_audio1 -i input_audio2 -i input_background_audio -filter_complex "
aevalsrc=0:d=10[s1];
[0:a]volume=volume=0.1[volume0];
[1:a]volume=volume=0.1[volume1];
[2:a]volume=volume=0.1[volume2];
[s1][volume1]concat=n=2:v=0:a=1[ac1];
[volume0][ac1]amix=inputs=2[amixed1];
[amixed1][volume2]amix=inputs=2:duration=first" output_audio

您需要使用filter_complex链接您将用于调整音量,静音空间,连续等过滤器的所有过滤器。

作为第一步,您可以连接两个需要一个接一个播放的音频文件。为此,我首先使用aevalsrc过滤器创建和静音音频,其持续时间与第一个音频剪辑相同。然后使用concat过滤器连接静音音频和第二个音频。 要调整音频,我使用了volume过滤器。您可以相应地调整音量值。要混合音频,您可以使用amix过滤器。您可以指定duration属性以获取[amixed1]持续时间的第一个输入。使用该选项,您可以使用audio1 + audio2的持续时间停止整个音频,而无需在整个背景音频持续时间内播放。

希望这有帮助!