MediaRecorder捕获的音频文件发送到服务器后被破坏

时间:2019-05-17 06:48:09

标签: android audio media mediacodec android-mediarecorder

我的应用程序录制了音频剪辑,并在录制完成后使用Retrofit2将剪辑发送到服务器。文件已在服务器中接收到,但文件已损坏,我的意思是损坏了,无法播放。我使用以下URL(示例/audio/myaudio.mp4)播放音频剪辑,并尝试使用邮递员将其与另一个音频文件一起播放,该音频文件可以成功播放。此外,甚至还可以通过Filezilla下载android捕获的音频剪辑具有相同的损坏文件。

这是我录制音频的方式:

mRecorder = new MediaRecorder();
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mRecorder.setAudioEncodingBitRate(32000);
        mRecorder.setAudioSamplingRate(44100);

 File root = android.os.Environment.getExternalStorageDirectory();
    File file = new File(root.getAbsolutePath() + "/Audios");
    if (!file.exists()) {
        file.mkdirs();
    }

    outputFile =  root.getAbsolutePath() + "/Audios/" + String.valueOf(System.currentTimeMillis() + ".mp3");
    Log.d("filename",outputFile);
    mRecorder.setOutputFile(outputFile);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

我也尝试将文件扩展名也更改为.mp3,.mp4和.3gpp,但是它们似乎都无法在服务器端工作。为了清楚起见,我附加了使用Retrofit2将音频文件发送到服务器的代码:

其他人也提出了相同的问题。我尝试了这些解决方案,但也无法正常工作。谁能帮我。

问题:Audio file captured by MediaRecorder is broken after it is sent to server using Retrofit 2

1 个答案:

答案 0 :(得分:1)

AAC格式对我有用

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);