我在创建某些文件类型时遇到了一些麻烦。
MediaRecorder myAudioRecorder=new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
myAudioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
myAudioRecorder.setAudioEncodingBitRate(16);
你能解释一下我需要使用哪一个组合才能制作普通的MP3,WAV,AAC或AMR音频文件。现在我不确定这是否正确:(
答案 0 :(得分:1)
使用MediaRecorder无法生成wav或mp3。使用MediaRecorder,您可以生成3gp,aac和m4a。我正在使用这些代码块来录制麦克风的音频:
if (Build.VERSION.SDK_INT <= 9) {
// Android 2.3.2 and lower
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "XXX"
+ File.separator + strDate + ".3gp";
mRecorder.setAudioSamplingRate(8000);
mRecorder.setAudioEncodingBitRate(12200);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
} else if (Build.VERSION.SDK_INT >= 10 && Build.VERSION.SDK_INT <= 15) {
// Android 2.3.3 - Android 4.0.4
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "XXX"
+ File.separator + strDate + ".m4a";
mRecorder.setAudioSamplingRate(44100);
mRecorder.setAudioEncodingBitRate(96000);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
} else {
// Android 4.1 and above
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "XXX"
+ File.separator + strDate + ".m4a";
mRecorder.setAudioSamplingRate(44100);
mRecorder.setAudioEncodingBitRate(96000);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
}
注意:当我尝试产生aac声音时,该文件无法在Android上播放但在Windows上无法播放。我不确定为什么,但m4a也会产生高质量的声音。
编辑:m4a和3gp文件在Android 4.x上完美播放。特别是我在Android 4.4.2三星Galaxy 4.4.2上进行了测试,两种输出格式都没有问题。但是我无法在Android 5.x和Android 6.x上播放m4a文件。 aac文件不播放所有三个平台。但所有文件(3gp,m4a,aac)都在Windows 10上播放。我不知道为什么。