合并具有不同编解码器的音频文件

时间:2019-11-12 07:40:32

标签: audio ffmpeg concat codec android-ffmpeg

我正在合并多个音频合并,并且正在使用此命令

(在下面的命令tempTxtFile中是所有音频路径的文件)

cmd = "-f concat -safe 0 -i " + tempTxtFile + " -c copy -preset ultrafast " + filepath;

好吧,因为我正在使用-c复制,所以它仅在所选音频为mp3编解码器时才有效,但是如果我将同时使用mp3和m4a(aac)或两个m4a音频,则会阻止我合并。

所以,我现在正在使用另一个命令,如下所示(用于2个音频):

cmd = "-f concat -safe 0 -i " + tempTxtFile + " -filter_complex [0:a][1:a]" + "concat=n=2:v=0:a=1[outa] -map [outa] -c:a mp3 -preset ultrafast " + filepath;

此命令显示运行时出现错误

  

过滤器说明[0:a] [1:a] concat = n = 2:v = 0:a = 1 [outa]中无效的文件索引1。

这是整个日志

Input #0, concat, from '/storage/emulated/0/Download/tempFile.txt':
  Duration: N/A, start: 0.000000, bitrate: 117 kb/s
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 117 kb/s
    Metadata:
      handler_name    : SoundHandler
Invalid file index 1 in filtergraph description [0:a][1:a]concat=n=2:v=0:a=1[outa].

现在我无能为力,也不知道任何有效的解决方案。

1 个答案:

答案 0 :(得分:1)

当不同文件的编解码器不同时,您应该分别输入所有输入,然后使用concat过滤器,例如

ffmpeg -i file1 -i file2 -i file3 -filter_complex concat=n=3:v=0:a=1 -c:a mp3 -vn out.mp3