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);
我的应用程序录制了一个音频剪辑,并在录制后使用 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);