我可以使用ffmpeg将两个音频mp3文件叠加/缩混为一个mp3输出文件吗?
答案 0 :(得分:49)
使用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
使用join过滤器:
ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex join=inputs=2:channel_layout=stereo output.mp3
或amerge:
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 Wiki: Audio Channels。
答案 1 :(得分:18)
检查出来:
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
我认为这会有所帮助。
答案 2 :(得分:13)
amix
过滤器有助于将多个音频输入混合到一个输出中。
如果您运行以下命令:
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
此命令将3个输入音频流(我使用两个mp3文件,在下面的示例中)混合为单个输出,其持续时间与第一个输入相同,并且辍学过渡时间为3秒。
amix
过滤器接受以下参数:
<强>输入强>: 输入数量。如果未指定,则默认为2.
<强>持续时间强>: 如何确定流末尾。
最长: 最长输入的持续时间。 (默认)
最短: 最短输入的持续时间。
第一: 第一次输入的持续时间。
<强> 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
部分,它也能正常工作。
答案 3 :(得分:2)
如果它们的长度不同,您可以使用apad向最短的声音添加无声声音
答案 4 :(得分:1)
使用Bash
set 'amovie=a.mp3 [gg]; amovie=b.mp3 [hh]; [gg][hh] amerge'
ffmpeg -f lavfi -i "$1" -q 0 c.mp3
答案 5 :(得分: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
在此阈值中,某值的大小将决定音频应达到的音量,阈值越小,音频将越多。比率给出了应压缩的其他音频量,比率越大,压缩量就越大。
答案 6 :(得分:0)
您可以使用以下命令参数:
// 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)