Android Audio Record类和MediaRecord类中的采样率

时间:2013-05-03 08:08:10

标签: android mediarecorder android-audiorecord

我想知道在Android AudioRecord类和Media记录类中设置音频采样率有什么区别?在音频记录类中,我们在创建类的对象时设置采样率,如

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                                            SampleRateInHz, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize); 

在MediaRecorder类中,我们通过函数调用显式设置。即。

mrec.setAudioSamplingRate(samplingRate);

我尝试过这两种方法,但只有在录音通过mediaRecorder课程录音时才能看到采样率的影响。我无法理解两者之间的差异。

1 个答案:

答案 0 :(得分:1)

AS sdk文档的AS, MediaRecord 用于录制音频和视频。录制控制基于简单的状态机。您将始终使用MediaRecord录制声音,除非您需要访问原始音频数据并处理它们(例如,应用您自己的DSP效果)。在这种情况下,您将使用AudioRecord。{ setAudioSamplingRate的{​​1}}与将MediaRecord传递到SampleRateInHz的效果相同,设置了所需的采样率。采样率越高,您获得的音质和频率范围就越大。一个理想的uman耳朵可以听到20到20000赫兹的声音。如果你将采样率设置为4100hz,那么你的频率响应将等于4100/2,几乎是20000hz。但是设备支持的频率范围是不同的。您应该始终检查设备是否支持您所需的频率。

为了检查特定频率是否有效,您可以使用以下代码:

AudioRecord

如果bufferSize值大于0,则表示设备支持您提供的频率。