5

我注意到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/

所以它无法以 48Khz 录制,而硬件音频芯片支持高达 96KHz:

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/

曲目

如何克服这个限制?

  • 可以使用任何其他 API 吗?开放式,阿尔萨,开放式?如何 ?

  • 可以从用户端重新配置 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

4

1 回答 1

2

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

于 2012-01-08T04:40:55.510 回答