使用ffmpeg库在android中合并.m4a文件

时间:2014-01-23 10:21:16

标签: android audio merge ffmpeg m4a

我有几个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 

但我没有收到任何错误。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我相信你必须创建一个文本文件并将其用作输入。文本文件需要如下所示:

file 'file1.m4a'
file 'file2.m4a'

然后运行以下命令行应该是:

ffmpeg -f concat -i "Path\To\MyList.txt" -c copy concatOutput.m4a

这对我有用。 您应该能够在代码中动态创建列表文本文件,并在运行FFMPEG命令行后将其删除。

有关此guide

的更多信息