我想知道在Android AudioRecord类和Media record类中设置音频采样率之间的区别是什么?在音频记录类中,我们在创建像
这样的类对象时设置采样率recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
SampleRateInHz, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize);
而在MediaRecorder类中,我们通过函数调用显式设置。例如
mrec.setAudioSamplingRate(samplingRate);
我尝试了两种,但采样率的影响只能在录音时看到,而不是通过mediaRecorder类录音。我不明白这两者有什么不同
在android sdk文档中,MediaRecord用于录制音频和视频。记录控制基于一个简单的状态机。您将始终使用MediaRecord来记录声音,除非您需要访问原始音频数据并处理它们(例如,应用您自己的DSP效果)。在这个场景中,您将使用AudioRecord
。MediaRecord
的setAudioSamplingRate
与将SampleRateInHz
传递给AudioRecord
相同,设定所需的采样率。采样率越高,音质和频率范围就越好。理想的人耳可以听到20到20000赫兹的声音。如果您将采样率设置为4100hz,那么您的频率响应将等于4100/2,这几乎是20000hz。但是,设备支持的频率范围不同。你应该经常检查设备是否支持你想要的频率。
为了检查一个特定的频率是否工作,你可以使用下面的代码:
int bufferSize = AudioRecord.getMinBufferSize(rate[i],AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);
如果bufferSize值大于0,则表示您提供的频率是设备支持的。