【问题标题】:Sample Rate in Android Audio Record class and MediaRecord classAndroid Audio Record 类和 MediaRecord 类中的采样率
【发布时间】:2013-04-27 13:59:40
【问题描述】:

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

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

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

mrec.setAudioSamplingRate(samplingRate);

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

【问题讨论】:

    标签: android mediarecorder android-audiorecord


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的全面回复,但我仍然面临同样的问题,即 setAudioSamplingRate 对音频没有影响,除了背景噪音会随着采样率的升高而降低。但是如果你改变音频 Record 类的值,它的频率和音高也会改变。这就是我必须单独录制音频和视频的原因。
    • 您的音质到底有什么问题?请在您的MediaRecord 上给我们一些代码。您想对声音应用哪些效果?您研究过 AudioFx 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多