我可以覆盖使用的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
例