【问题标题】:Merging two MP3 audio files合并两个 MP3 音频文件
【发布时间】:2015-07-02 14:22:11
【问题描述】:

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

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.

但是当我尝试运行内部可用的命令时,在某些命令中我会遇到不同的错误,例如,

-- 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.

【问题讨论】:

  • 你找到解决办法了吗?

标签: android audio ffmpeg mixing


【解决方案1】:

您的 FFmpeg 版本是多少? 我相信它已经过时了,这就是它不起作用的原因。

首先 setp 从official site 下载最新版本,如果是的话,试试你的命令是否有效,而不是找到另一个(或构建你自己的)为 android 可执行文件编译的命令

【讨论】:

    【解决方案2】:

    首先检查您的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

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      我知道这个问题发布已经有一段时间了,但我认为你的主要问题是你不应该在你的字符串中包含“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();
      

      【讨论】:

        猜你喜欢
        • 2011-12-06
        • 2019-05-19
        • 2016-05-22
        • 1970-01-01
        • 2014-03-25
        • 2017-08-19
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        相关资源
        最近更新 更多