Android Audio Record类和MediaRecord类的采样率



我想知道在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效果)。在这个场景中,您将使用AudioRecordMediaRecordsetAudioSamplingRate与将SampleRateInHz传递给AudioRecord相同,设定所需的采样率。采样率越高,音质和频率范围就越好。理想的人耳可以听到20到20000赫兹的声音。如果您将采样率设置为4100hz,那么您的频率响应将等于4100/2,这几乎是20000hz。但是,设备支持的频率范围不同。你应该经常检查设备是否支持你想要的频率。

为了检查一个特定的频率是否工作,你可以使用下面的代码:

    int bufferSize = AudioRecord.getMinBufferSize(rate[i],AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);

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

相关内容

  • 没有找到相关文章

最新更新