如何在 linux/android 平台上设置高于 44.1kHz 的音频采样率?
Posted
技术标签:
【中文标题】如何在 linux/android 平台上设置高于 44.1kHz 的音频采样率?【英文标题】:How to set Audio Sampling rate higher than 44.1kHz on linux/android platform? 【发布时间】:2011-10-24 19:51:35 【问题描述】:我注意到android.media.AudioRecord
无法工作
使用错误时sampleRateInHz
重现
您还可以轻松重现该问题 在三星 Nexus S 上使用 pcmrecorder(由 Google 提供):
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/
曲目
如何克服这个限制?
可以使用任何其他 API 吗?开放式,阿尔萨,开放式?以及如何?
可以从用户端重新配置 alsa 驱动程序 能够在 44100Hz 以上采样? (.asoundrc)
有没有可能做这样的事情 无需刷新/root/重启设备
否则如何解决这个问题? 使用本机代码有效地进行上采样(插值)?
更多
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】:nexus 支持的最大采样率为 44.1 kHz,当 Android 平台请求将采样率设置为 48 或更高时,音频硬件会抛出错误。要回答您的问题,采样率的限制取决于您运行程序的特定硬件。我在我的 nexus 上尝试了您的代码并得到了与您相同的结果,但如果我在旧的 mytouch 3g 上尝试它,最大采样率可能是 22.05 kHz。基本上,您需要在初始化音频配置时检查支持的采样率范围。
【讨论】:
感谢您的评论,我感到很孤独……我想我必须深入研究操作系统的源代码并找到这个限制是硬编码的,因为硬件具有更高的功能……关于 mytouch 3 它没有确认规格,是否在某处报告了错误?以上是关于如何在 linux/android 平台上设置高于 44.1kHz 的音频采样率?的主要内容,如果未能解决你的问题,请参考以下文章
如何在通用 Windows 平台地图控件上设置 LocationRectangle?
在 iphone 上测试 ios 版本高于 xcode sdk 的应用程序