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

Audio file captured by MediaRecorder is broken after it is sent to server

我的应用程序录制了一个音频剪辑,并在录制后使用 Retrofit2 将剪辑发送到服务器 completed.The 服务器收到文件,但文件已损坏,我所说的损坏的意思是它不能被播放。我使用以下 URL(示例 /audio/myaudio.mp4)来播放音频剪辑,我尝试使用邮递员与另一个音频文件一起播放,音频文件可以播放 successfully.Besides,甚至下载音频剪辑android 通过 Filezilla 捕获的文件也有相同的损坏文件。

这是我录制音频的方式:

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 ,但是 none 它们似乎在服务器端工作。为了清楚起见,我附上了使用 Retrofit2 将音频文件发送到服务器的代码:

其他人也问过同样的问题。我尝试了这些解决方案,但也没有用。谁能帮帮我。

问题:

AAC 格式对我有用

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);