我正在尝试使用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.
答案 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();