合并两个MP3音频文件

时间:2015-07-02 14:22:12

标签: android audio ffmpeg mixing

我正在尝试使用ffmpeg库来混合两个MP3或wav音频文件,使用我在网上搜索的可用命令,如下所示:

ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp3

来自链接How to overlay two audio files using ffmpeg

另外,尝试了不同形式的其他许多解决方案。

但他们都没有为从链接下载的库工作: https://github.com/hiteshsondhi88/ffmpeg-android-java

但是当我试图运行intener上可用的命令时,在某些命令中我会得到不同的错误,例如,

-- Unable to find suitable output format for 'ffmpeg' ffmpeg: Invalid argument

我还尝试了一个命令,

 String res = "ffmpeg -y -i " + a.getAbsolutePath() + " -i " + b.getAbsolutePath() + " -filter_complex '[0:0][1:0] amix=inputs=2:duration=longest' -c:a libmp3lame " + c.getAbsolutePath();

这是错误,No such filter:" Error configuring filters.

3 个答案:

答案 0 :(得分:0)

你的FFmpeg版本是什么? 我相信它已经过时了,这就是它无法正常工作的原因。

首先从official site下载最新版本试试如果你的命令正常工作,那么找到另一个(或构建你自己的)为android可执行文件编译

答案 1 :(得分:0)

首先检查您的FFmpeg版本。您必须更改使用amix过滤器的方式。 amix过滤器混合音频。以下是我的建议。

ffmpeg -i input_audio1 -i input_audio2 -filter_complex "aevalsrc=0:d=10[s1];
[s1][1:a]concat=n=2:v=0:a=1[ac1];
[0:a][ac1]amix[aout]" -map [aout] -c:a libmp3lame output_audio

你可以添加一个静音音频,其持续时间与第一个音频相同,并且对它们使用amix。因此原始音频不会重叠。 aevalsrc将创建一个持续时间为10秒的无声音频。您还需要相应地为输出选择合适的编解码器。您可以找到那些编解码器here

希望这有帮助!

答案 2 :(得分:0)

我知道这个问题发布已经有一段时间了,但我认为你的主要问题是你不应该在你的字符串中加入“ffmpeg”。

所以你的cmd行是:

String res = "-y -i " + a.getAbsolutePath() + " -i " + b.getAbsolutePath() + " -filter_complex '[0:0][1:0] amix=inputs=2:duration=longest' -c:a libmp3lame " + c.getAbsolutePath();