繁体   English   中英

Android Audio Record类和MediaRecord类中的采样率

[英]Sample Rate in Android Audio Record class and MediaRecord class

我想知道在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用于记录音频和视频。 记录控件基于简单的状态机。 除非需要访问原始音频数据并进行处理(例如,应用自己的DSP效果), 否则将始终使用MediaRecord记录声音。在这种情况下,将使用AudioRecord setAudioSamplingRateMediaRecord确实与传递SampleRateInHzAudioRecord ,设置所需的采样rate.The采样率越高越好音质和频率范围内,你会get.An理想乌曼耳能听到的声音从20到20000 hz.If你将采样率设置为4100hz,则您的频率响应将等于4100/2,几乎是20000hz。但是设备支持的频率范围是不同的。 您应始终检查设备是否支持所需的频率。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM