我有几个M4A(声音)文件。我想组合成一个声音文件。这可以在android中使用ffmpeg库。
我试过这种方式。
public void myFunctionMergeAudioFiles(ShellCallback sc,List<String> mListFiles, String outPath) throws IOException, InterruptedException
{
ArrayList<String> cmd = new ArrayList<String>();
cmd = new ArrayList<String>();
cmd.add(ffmpegBin);
cmd.add("f");
cmd.add("concat");
cmd.add("-i");
for(int i=0;i<mListFiles.size();i++){
cmd.add(new File(mListFiles.get(i)).getCanonicalPath());
}
cmd.add("-c");
cmd.add("-acodec");
cmd.add("aac");
cmd.add("copy");
File fileOut = new File(outPath);
cmd.add(fileOut.getCanonicalPath());
execFFMPEG(cmd, sc);
}
我的日志: -
01-23 15:32:17.841: D/FFMPEG(12678): /data/app-lib/com.apps.messagingapp-1/libffmpeg.so f concat -i /storage/emulated/0/MGOApp/Temp/Recording #1_0.m4a /storage/emulated/0/MGOApp/Temp/Recording #1_1.m4a /storage/emulated/0/MGOApp/Temp/Recording #1_2.m4a -c -acodec aac copy /storage/emulated/0/MGOApp/Recording #1.m4a
但我没有收到任何错误。 提前谢谢。
答案 0 :(得分:0)
我相信你必须创建一个文本文件并将其用作输入。文本文件需要如下所示:
file 'file1.m4a'
file 'file2.m4a'
然后运行以下命令行应该是:
ffmpeg -f concat -i "Path\To\MyList.txt" -c copy concatOutput.m4a
这对我有用。 您应该能够在代码中动态创建列表文本文件,并在运行FFMPEG命令行后将其删除。
有关此guide
的更多信息