【问题标题】:Merge two audio file using ffmpeg使用ffmpeg合并两个音频文件
【发布时间】:2017-11-25 02:54:35
【问题描述】:

我想使用 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)

请帮忙解决错误。

【问题讨论】:

标签: android ffmpeg android-ffmpeg


【解决方案1】:

首先确保您拥有权限

试试这个 -

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 copy output

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

【讨论】:

  • 看来 OP 想要连接,而不是混合。另外,不需要amovie,只需像往常一样添加输入ffmpeg -i file1.mp3 -i file2.mp3 ...
猜你喜欢
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
相关资源
最近更新 更多