你好,我想用mediaRecorder录制语音.我想保存格式是amr.
this.mediaRecorder = new MediaRecorder(); this.mediaRecorder.setAudioChannels(1); this.mediaRecorder.setAudioSamplingRate(8000); this.mediaRecorder.setAudioEncodingBitRate(16); this.mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); this.mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR); this.mediaRecorder.setOutputFile(this.file.getAbsolutePath()); this.mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
我用过.mediaRecorder.setAudioEncodingBitRate(16),有些设备还可以
mediaRecorder.setAudioEncodingBitRate(12500),有些设备没问题
但是我删除了mediaRecorder.setAudioEncodingBitRate,有些设备还可以
所以我的问题是如何获得默认的AudioEncodingBitRate.
我需要使用哪个参数?
解决方法
您将AudioEncodingBitRate设置得太低.我犯了同样的错误:-)
这似乎有效:
MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); if (Build.VERSION.SDK_INT >= 10) { recorder.setAudioSamplingRate(44100); recorder.setAudioEncodingBitRate(96000); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); } else { // older version of Android,use crappy sounding voice codec recorder.setAudioSamplingRate(8000); recorder.setAudioEncodingBitRate(12200); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); } recorder.setOutputFile(file.getAbsolutePath()); try { recorder.prepare(); } catch (IOException e) { throw new RuntimeException(e); }
这个想法来自here
加:阅读文档. setAudioSamplingRate的文档说明如下:
The sampling rate really depends on the format for the audio recording,as well as the capabilities of the platform. For instance,the sampling rate supported by AAC audio coding standard ranges from 8 to 96 kHz,the sampling rate supported by AMRNB is 8kHz,and the sampling rate supported by AMRWB is 16kHz.