Android 使用ffmpeg合并两个音频文件

Android 使用ffmpeg合并两个音频文件,android,ffmpeg,android-ffmpeg,Android,Ffmpeg,Android Ffmpeg,我想用ffmpeg库合并两个mp3文件,但没有成功。下面是我的代码 GeneralUtils.checkForPermissionsMAndAbove(MergerActivity.this, true); LoadJNI vk = new LoadJNI(); try { String workFolder = getApplicationContext().getFilesDir().getAbsolutePath(); //String[] complexCommand =

我想用ffmpeg库合并两个mp3文件,但没有成功。下面是我的代码

GeneralUtils.checkForPermissionsMAndAbove(MergerActivity.this, true);
LoadJNI vk = new LoadJNI();
try {
    String workFolder = getApplicationContext().getFilesDir().getAbsolutePath();
    //String[] complexCommand = {"ffmpeg","-i", "/sdcard/videokit/in.mp4"};
    String[] complexCommand = {"ffmpeg -i \"concat: /storage/internalsd/Music/02 Love Dose.mp3| /storage/internalsd/Music/02 Love Dose.mp3\" -acodec copy output.mp3"};

    vk.run(complexCommand , workFolder , getApplicationContext());
    Log.i("test", "ffmpeg4android finished successfully");
} catch (Throwable e) {
    Log.e("test", "vk run exception.", e);
}
错误日志显示如下

vk run exception.

com.netcompss.ffmpeg4android.CommandValidationException
    at com.netcompss.loader.LoadJNI.run(LoadJNI.java:39)
    at com.netcompss.loader.LoadJNI.run(LoadJNI.java:55)
    at com.handyaudio.MergerActivity.onMergeButtonClicked(MergerActivity.java:356)
    at com.handyaudio.MergerActivity.onClick(MergerActivity.java:272)
    at android.view.View.performClick(View.java:4446)
    at android.view.View$PerformClick.run(View.java:18437)
    at android.os.Handler.handleCallback(Handler.java:733)

请帮助解决错误。

首先确保您拥有权限

试试这个-

ffmpeg -filter_complex "amovie=file1.mp3 [a0]; amovie=file2.mp3 [a1]; [a0][a1] amix=inputs=2:duration=shortest [aout]" -map [aout] -acodec mp3 file_merged.mp3
编辑1:

concat协议是这样的:
ffmpeg-i'concat:input1 | input2-codec复制输出


我认为您的错误之处在于,在文件名中,您在完成文件名之前放置了一个
空格
,即
02 LoveDose.mp3

,OP似乎希望连接,而不是混合。另外,不需要
amovie
,只需像往常一样添加输入
ffmpeg-i file1.mp3-i file2.mp3…
。使用,而不是concat协议。