如何使用覆盖ffmpeg的两个音频文件(How to overlay two audio files

2019-07-18 15:04发布

我可以覆盖使用的ffmpeg两个音频MP3文件合并成一个MP3输出文件?

Answer 1:

你可以做到这一点ffmpeg使用amerge过滤器:

ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 output.mp3
  • 见amerge过滤网上的文档和FFmpeg的维基:音频频道操控更多的例子,信息和选项。

  • -ac 2将立体声输出。 如果您正在合并两个立体声输入,这非常有用:amerge将4声道输出和-ac 2将其缩混到立体声。

  • 请参阅Hydrogenaudio百科:推荐LAME编码器设置和FFmpeg的MP3编码指南 ,以得到一个什么样的想法-q:a值(音频质量),你可能想要的。



Answer 2:

看一下这个:

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

我认为这将有助于。



Answer 3:

所述amix滤波器有助于多个音频输入组合成一个单一的输出。

如果您运行下面的命令:

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT

此命令将3个输入的音频流(I用了两个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的一部分。

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



Answer 4:

如果它们是不同的长度,你可以使用APAD到无声声音添加到最短的一个



Answer 5:

使用bash

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



文章来源: How to overlay two audio files using ffmpeg