如何在linux / android平台上设置高于44.1kHz的音频采样率?

时间:2011-08-11 09:45:55

标签: android alsa nexus-s audiorecord sample-rate

我注意到android.media.AudioRecord无法正常工作 使用错误的sampleRateInHz

再现

您还可以轻松复制该问题 在三星Nexus S(谷歌)上使用pcmrecorder:

https://market.android.com/details?id=com.kohei.android.pcmrecorder

http://ko-yasui.com/home/pcmrecorder/

因此,当硬件音频芯片支持高达96KHz时,它无法以48Khz记录:

http://www.wolfsonmicro.com/products/audio_hubs/WM8994/

这是设备/固件错误还是已知限制?

请注意,android平台仅保证大约44100Hz(甚至不是24KHz)

http://developer.android.com/reference/android/media/AudioRecord.html

  

sampleRateInHz:采样率以赫兹表示。 44100Hz是目前唯一的费率   保证可以在所有设备上运行,但其他速率(如22050,16000和11025)可能适用于某些设备。

消息来源

您可以在以下位置找到重现这些问题的示例代码:

https://github.com/rzr/rzr-android-test/blob/api-android-media/src/fr/online/rzr/test/

TRACKS

如何克服这个限制?

  • 可以使用任何其他API吗? opensl,alsa,openal?以及如何?

  • 可以从用户端重新配置alsa驱动程序 能够在44100Hz以上采样? (.asoundrc)

  • 是否可以做这样的事情 无需重新刷新/生根/重启设备

  • 否则如何解决这个问题? 使用本机代码有效地进行上采样(插值)?

更多

http://www.anddev.org/multimedia-problems-f28/how-to-set-audio-sampling-rate-higher-than-44-1hz-nexuss-t54722.html

http://en.androidwiki.com/wiki/Nexus_S

1 个答案:

答案 0 :(得分:2)

nexus s支持的最大采样率为44.1 kHz,当Android平台请求将采样率设置为48或更高时,音频硬件会抛出错误。要回答您的问题,采样率的限制取决于您运行程序的特定硬件。我在我的nexus s上尝试了你的代码并获得了与你相同的结果,但是如果我在旧的mytouch 3g上尝试它,最大采样率可能是22.05 kHz。基本上,您需要在初始化音频配置时检查支持的采样率范围。