我的应用程序录制了音频剪辑,并在录制完成后使用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
答案 0 :(得分:1)
AAC格式对我有用
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);