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

RzR*_*RzR 5 android alsa sample-rate audiorecord nexus-s

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

复制

您还可以使用Samsung Nexus S(Google)上的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

小智 2

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