2013-05-03 112 views
0

我想知道设置Android AudioRecord类和媒体记录类中的音频采样率有什么区别?在音频记录类我们设置采样率,同时创造一个类的对象像Android音频记录类和MediaRecord类中的采样率

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

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

mrec.setAudioSamplingRate(samplingRate); 

我尝试都但同时音频记录未记录通过量mediaRecorder类而采样速率的效果只能看到。我不明白两者有何不同。

回答

1

作为android sdk文档,MediaRecord用于记录音频和视频。录制控制基于简单的状态机。您将始终使用MediaRecord录制声音,除非您需要访问原始音频数据并处理它们(例如,应用您自己的DSP效果)。在这种情况下,您将使用AudioRecordsetAudioSamplingRateMediaRecord与将SampleRateInHz设置为AudioRecord的设置相同,设置所需的采样率。采样率越高,您获得的音质和频率范围就越好。理想的人耳可以听到20-20000Hz的声音。如果您设置你的采样率为4100hz,那么你的频率响应将等于4100/2,这几乎是20000hz。然而,设备支持的频率范围是不同的。你应该经常检查设备是否支持你想要的频率。

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

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

如果BUFFERSIZE值是大于0,那么,你提供你的requency由设备支持。

+0

感谢您的全面回复,但我仍然面临同样的问题,即setAudioSamplingRate对音频没有任何影响,随着采样率变高,背景噪音会降低。但如果您更改音频录音类中的值,则其频率和音高也会发生变化。这是我必须单独录制音频和视频的原因。 – 2013-05-03 09:20:29

+0

音质问题到底是什么?请给我们一些你的'MediaRecord'上的代码。你想应用于哪些效果?你学过AudioFx吗? – 2013-05-03 09:34:06