我可以使用 ffmpeg 将两个音频 mp3 文件叠加/缩混到一个 mp3 输出文件中吗?
7 回答
立体声 + 立体声 → 立体声
正常缩混
使用amix过滤器:
ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amix=inputs=2:duration=longest output.mp3
或amerge过滤器:
ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amerge=inputs=2 -ac 2 output.mp3
将每个输入缩混到特定的输出通道中
ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex "amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3" output.mp3
单声道 + 单声道 → 立体声
使用连接过滤器:
ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex join=inputs=2:channel_layout=stereo output.mp3
或合并:
ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amerge=inputs=2 output.mp3
单声道 + 单声道 → 单声道
使用amix过滤器:
ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amix=inputs=2:duration=longest output.mp3
更多信息和示例
看一下这个:
ffmpeg -y -i ad_sound/whistle.mp3 -i ad_sound/4s.wav -filter_complex "[0:0][1:0] amix=inputs=2:duration=longest" -c:a libmp3lame ad_sound/outputnow.mp3
我认为这会有所帮助。
该amix
过滤器有助于将多个音频输入混合到一个输出中。
如果您运行以下命令:
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
该命令会将 3 个输入音频流(我在下面的示例中使用了两个 mp3 文件)混合到一个输出中,其持续时间与第一个输入相同,并且 dropout 转换时间为 3 秒。
amix
过滤器接受以下参数:
输入:输入的数量。如果未指定,则默认为 2。
持续时间:如何确定流的结束。
最长:最长输入的持续时间。(默认)
shortest:最短输入的持续时间。
first:第一次输入的持续时间。
dropout_transition:输入流结束时卷重新归一化的转换时间(以秒为单位)。默认值为 2 秒。
例如,我在 Ubuntu 中运行以下命令:FFMPEG 版本:3.2.1-1 UBUNTU 16.04.1
ffmpeg -i background.mp3 -i bSound.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=0 -codec:a libmp3lame -q:a 0 OUTPUT.mp3
-codec:a libmp3lame -q:a 0
用于设置可变比特率。请记住,如果有必要,您需要安装 libmp3lame 库。但是,即使没有该-codec:a libmp3lame -q:a 0
部件,它也可以工作。
对于合并具有不同音量和不同持续时间的两个音频文件,以下命令将起作用:
ffmpeg -y -i audio1.mp3 -i audio2.mp3 -filter_complex "[0:0]volume=0.09[a];[1:0]volume=1.8[b];[a][b]amix=inputs=2:duration=longest" -c:a libmp3lame output.mp3
此处持续时间可以更改为最长或最短,您也可以根据需要更改音量级别。
如果您想为某些声音添加背景音乐,请使用以下命令,因为在间隙中,音乐将自动变响:
ffmpeg -i bgmusic.mp3 -i audio.mp3 -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress=threshold=0.003:ratio=20[bg]; [bg][mix]amerge[final]" -map [final] final.mp3
在这个阈值中,它的值将决定音频应该响多少,阈值越小,音频就越多。比率给出了其他音频应该被压缩多少,比率越大,压缩越多。
如果它们的长度不同,您可以使用apad为最短的一个添加静音
与重击
set 'amovie=a.mp3 [gg]; amovie=b.mp3 [hh]; [gg][hh] amerge'
ffmpeg -f lavfi -i "$1" -q 0 c.mp3
您可以使用以下命令参数:
// Command is here
let commandValue = "-y -i \(recordedAudioPath) -i \(backgroundAudio) -filter_complex [\(0):a][\(1):a]amerge=inputs=\(2)[a] -map [a] -ac \(2) -shortest -preset ultrafast \(outputPath)"
MobileFFmpeg.execute(commandValue)