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

Merge Audio Files with different Codecs

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

(在下面的命令中,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;

此命令显示 运行

时出现错误

Invalid file index 1 in filtergraph description [0:a][1:a]concat=n=2:v=0:a=1[outa].

这是完整的日志

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

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

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

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