在android中使用FFMPEG转换音频文件

在android中使用FFMPEG转换音频文件,android,ffmpeg,android-ffmpeg,Android,Ffmpeg,Android Ffmpeg,我正在开发android应用程序,我要求记录通话并将其转换为WAVE(.wav)格式并发送到服务器 我能够在手机中成功录制并保存音频。录制的文件mime类型是3gpp,现在我想将此3gpp文件转换为wav。我尝试使用FFMPEG,但无法转换它。我在这里张贴我的代码,任何帮助都将不胜感激 在将录制的文件从aac转换为wav时,我发现以下错误 Exception while trying to run: [Ljava.lang.String;@64075a0 java.io.IOExcept

我正在开发android应用程序,我要求记录通话并将其转换为WAVE(.wav)格式并发送到服务器

我能够在手机中成功录制并保存音频。录制的文件mime类型是3gpp,现在我想将此3gpp文件转换为wav。我尝试使用FFMPEG,但无法转换它。我在这里张贴我的代码,任何帮助都将不胜感激

在将录制的文件从aac转换为wav时,我发现以下错误

Exception while trying to run: [Ljava.lang.String;@64075a0
    java.io.IOException: Cannot run program "/data/user/0/com.sms.example.example/files/ffmpeg": error=2, No such file or directory
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:983)
        at java.lang.Runtime.exec(Runtime.java:691)
        at java.lang.Runtime.exec(Runtime.java:559)
        at com.github.hiteshsondhi88.libffmpeg.ShellCommand.run(ShellCommand.java:10)
        at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:38)
        at com.github.hiteshsondhi88.libffmpeg.FFmpegExecuteAsyncTask.doInBackground(FFmpegExecuteAsyncTask.java:10)
        at android.os.AsyncTask$2.call(AsyncTask.java:305)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)
     Caused by: java.io.IOException: error=2, No such file or directory
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:133)
        at java.lang.ProcessImpl.start(ProcessImpl.java:128)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:964)

艾米会非常感激你的帮助。。。提前感谢

请在执行命令之前先调用load binary方法

FFmpeg ffmpeg = FFmpeg.getInstance(this);
    try {
        ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
            @Override
            public void onStart() {
            }

            @Override
            public void onFailure() {
            }

            @Override
            public void onSuccess() {
            }

            @Override
            public void onFinish() {
            }
        });
    } catch (FFmpegNotSupportedException e) {
    }

请再试一次,如果不起作用,请告诉我。

您是否已在应用程序目录中复制了ffmpeg so文件?我已集成了Gradle插件实现'com.writingminds:FFmpegAndroid:0.3.2'。我还需要复制ffmpeg文件吗???如果是,请给出步骤。谢谢回答!!!以前的错误已经过去,现在我进入新的一个。。。[NULL@0xf0f1e000]找不到适合“ffmpeg”ffmpeg的输出格式:参数无效我想您的ffmpeg二进制文件不支持.wav格式。请分享更多错误详细信息。这是我编写ffmpeg查询的方式,字符串[]cmd=新字符串[4];cmd[0]=“ffmpeg”;cmd[1]=“i”;cmd[2]=recordedFileName+“”;cmd[3]=“+sampleDir+”/“+”sampleAudio.wav”;。。。这是正确的方法吗??如果没有,请纠正我…请再试一次。字符串[]cmd=新字符串[3];cmd[0]=“i”;cmd[1]=recordedFileName+“”;cmd[2]=“+sampleDir+”/“+”sampleAudio.wav”;现在错误是[NULL@0xed222000]无法为'-i'-i:无效参数找到合适的输出格式。。。
FFmpeg ffmpeg = FFmpeg.getInstance(this);
    try {
        ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
            @Override
            public void onStart() {
            }

            @Override
            public void onFailure() {
            }

            @Override
            public void onSuccess() {
            }

            @Override
            public void onFinish() {
            }
        });
    } catch (FFmpegNotSupportedException e) {
    }