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

发布于 2024-11-29 04:44:18 字数 1984 浏览 1 评论 0原文

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

REPRODUCE

您也可以轻松重现该问题 在 Samsung Nexus S 上使用 pcmrecorder(由 Google 提供):

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/

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

I noticed that android.media.AudioRecord failed to work
when using wrong sampleRateInHz

REPRODUCE

You can also reproduce easily that issue
using pcmrecorder on Samsung Nexus S (by Google) :

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

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

So It fails to record at 48Khz while the hardware audio chip supports up to 96KHz :

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

Is this a device/firmware bug or known limitation?

Note that the android platform only ensure about 44100Hz (not even 24KHz)

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

sampleRateInHz: the sample rate expressed in Hertz. 44100Hz is currently the only rate
that is guaranteed to work on all devices, but other rates such as 22050, 16000, and 11025 may work on some devices.

SOURCE CODE

You'll find a sample code to reproduce those issues at :

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

TRACKS

How to overcome this limitation ?

  • could any other API be used ? opensl, alsa, openal ? and how ?

  • could alsa driver be reconfigured from user side
    to be able to sample above 44100Hz ? ( .asoundrc )

  • Is it possible to do a such thing
    without reflashing/rooting/rebooting the device

  • else how to workaround this ?
    upsampling (interpolation) efficiently, using native code ?

MORE

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄离 2024-12-06 04:44:19

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

The maximum sample rate supported for the nexus s is 44.1 kHz, the audio hardware is throwing an error when the Android platform requests to set the sample rate at 48 and higher. To answer your question, the limit for the sample rate is determined by the specific hardware you're running the program on. I tried your code on my nexus s and got the same result as you, but if I tried it on my old mytouch 3g the maximum sample rate would probably be 22.05 kHz. Basically you need to check what the supported range of sample rates is when you're initializing the audio configuration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文