如何使用ffmpeg覆盖/缩混两个音频文件

问题描述 投票:35回答:5

我可以使用ffmpeg将两个音频mp3文件叠加/缩混成一个mp3输出文件吗?

audio ffmpeg mp3 cmd
5个回答
50
投票

stereo + stereo → stereo

Normal downmix

Normal downmix

使用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

Downmix each input into specific output channel

Downmix each input into specific output channel

使用amergepan过滤器:

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex "amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3" output.mp3

mono + mono → stereo

mono + mono → stereo

使用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

mono + mono → mono

mono + mono → mono

使用amix过滤器:

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amix=inputs=2:duration=longest output.mp3

More info and examples

FFmpeg Wiki: Audio Channels


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

我认为这会有所帮助。


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。
  • duration:如何确定流末尾。 最长:输入时间最长的持续时间。 (默认) 最短:输入最短的持续时间。 第一:第一次输入的持续时间。
  • 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部分也能工作。

参考:https://ffmpeg.org/ffmpeg-filters.html#amix


2
投票

如果它们的长度不同,您可以使用apad为最短的声音添加静音


1
投票

随着Bash

set 'amovie=a.mp3 [gg]; amovie=b.mp3 [hh]; [gg][hh] amerge'
ffmpeg -f lavfi -i "$1" -q 0 c.mp3

Example

© www.soinside.com 2019 - 2024. All rights reserved.