0

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

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

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

mrec.setAudioSamplingRate(samplingRate);

我都试过了,但采样率的效果只能在录音时看到,而不是在通过 mediaRecorder 类录制时看到。我不明白两者之间有什么区别。

4

1 回答 1

3

android sdk 文档的 AS,MediaRecord用于录制音频和视频。记录控制基于一个简单的状态机。您将始终使用 MediaRecord 来录制声音,除非您需要访问原始音频数据并对其进行处理(例如,应用您自己的 DSP 效果)。在这种情况下,您将使用AudioRecord. setAudioSamplingRateofMediaRecord与传递SampleRateInHzAudioRecord,设置所需的采样率。采样率越高,您将获得的音质和频率范围越好。理想的人耳可以听到 20 到 20000 赫兹的声音。如果您将采样率设置为 4100 赫兹,那么您的频率响应将等于到 4100/2,几乎是 20000hz。但是设备支持的频率范围不同。你应该经常检查设备是否支持你想要的频率。

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

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

如果 bufferSize 值大于 0,那么您提供的频率受设备支持。

于 2013-05-03T08:30:24.543 回答