我想知道在Android AudioRecord类和Media记录类中设置音频采样率有什么区别?在音频记录类中,我们在创建类的对象时设置采样率,如
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
SampleRateInHz, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize);
在MediaRecorder类中,我们通过函数调用显式设置。即。
mrec.setAudioSamplingRate(samplingRate);
我尝试过这两种方法,但只有在录音通过mediaRecorder课程录音时才能看到采样率的影响。我无法理解两者之间的差异。
答案 0 :(得分:1)
AS sdk文档的AS, MediaRecord 用于录制音频和视频。录制控制基于简单的状态机。您将始终使用MediaRecord录制声音,除非您需要访问原始音频数据并处理它们(例如,应用您自己的DSP效果)。在这种情况下,您将使用AudioRecord
。{ setAudioSamplingRate
的{1}}与将MediaRecord
传递到SampleRateInHz
的效果相同,设置了所需的采样率。采样率越高,您获得的音质和频率范围就越大。一个理想的uman耳朵可以听到20到20000赫兹的声音。如果你将采样率设置为4100hz,那么你的频率响应将等于4100/2,几乎是20000hz。但是设备支持的频率范围是不同的。您应该始终检查设备是否支持您所需的频率。
为了检查特定频率是否有效,您可以使用以下代码:
AudioRecord
如果bufferSize值大于0,则表示设备支持您提供的频率。