2013-04-29 111 views
1

我尝试构建一个应用程序,其中有一个记录功能。我希望用户能够选择记录质量,其中一个选项是AAC记录。我正在使用下面的代码,但我一直在设置audioSamplingRate错误..任何想法?Mediarecorder setParameter failed(setAudioSamplingRate)

mediaRecorder = new MediaRecorder(); 
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
        mediaRecorder.setAudioSamplingRate(96000); 
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

04-29 10:32:17.477: E/MediaRecorder(18750): setParameters(audio-param-sampling-rate=96000) failed: -22 
04-29 10:32:17.477: E/com.test.com.AudioRecorder(18750): setParameter failed. 
04-29 10:32:17.477: E/com.test.com.AudioRecorder(18750): prepare() method called on illegal state 
+0

96 kHz是一个非常高的采样率,并不保证被支持。我建议您尝试一个共同采样率<= 48 kHz(例如48000,41001,22050,16000,8000)。 – Michael 2013-04-29 09:26:10

+0

我试图将它设置为16000,不会返回最初的错误,但另一个..以下错误:04-29 12:15:09.989:E/MediaRecorder(23954):准备失败:-2147483648 04-29 12:15:09.989:E/com.test.com.AudioRecorder(23954):准备失败。 – 2013-04-29 10:16:12

回答

0

每个音频采样率是不是在设备支持的错误。所以,如果它不被支持,它会给出错误或内部裁剪,使其适合。为质量,您可以设置音频编码比特率与采样率.44100采样率是由所有Android设备支持根据其audiorecorder文档。您可以使用根据你need.this公式可以帮助你

比特率=(采样速率)×(位深度)×(通道数)

位深度的比特率通常在8机器人装置是。