iphone - 在 iOS 中强制执行音频采样率

标签 iphone ios ipad audio core-audio

我有一个应用程序正在使用 RemoteIO 音频单元来创建声音。然而,由于延迟和计算问题,该系统的采样率不能高于 8 kHz。我使用以下行来设置采样率。

AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareSampleRate,propSize,&hwSampleRate)

但是,在某些运行中,我得到了 44.1 kHz 的采样率。在这种情况下,我的应用程序似乎无法正常工作,因为它无法以该采样率处理计算。将采样率强制为 8 kHz 的最佳选择是什么?退出并再次打开该应用程序有效,但会导致糟糕的用户体验。

最佳答案

正如 hotpaw2 所指出的,音频是 iOS 上的共享资源。您无法获得对硬件的独占访问权。调用 AudioSessionSetProperty/kAudioSessionProperty_PreferredHardwareSampleRate 设置首选硬件采样率。正如您所注意到的,您最终可能会以不同的速率运行硬件,这并不意味着您的应用程序不能以 8kHz 的频率运行。

如果您正确配置 RemoteIO 格式,RemoteIO 将为您执行输出采样率转换。硬件将以 44.1kHz 的频率运行,但您的应用程序将以 8kHz 的频率输出。

您可以通过在本文档中搜索“采样率”来了解实现此目的的各种方法:

http://developer.apple.com/library/ios/documentation/MusicAudio/Conceptual/AudioUnitHostingGuide_iOS/ConstructingAudioUnitApps/ConstructingAudioUnitApps.html

一个选项(如文档中所述)是设置具有正确输出采样率的混音器,然后将渲染回调附加到混音器的输入。

关于iphone - 在 iOS 中强制执行音频采样率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18280823/

相关文章:

iOS 7 UIImagePickerView 最初显示黑色预览

iphone - iOS 排行榜不显示分数数据

ios - 与 ROS 同步时仅删除本地 Realm

iphone - UITextField rightView 上的触摸事件

iOS计算器实现困境: how and where to create the calculator stack

objective-c - 带有摇摆(随机播放)Obj-C 的音频音序器

ios - UILabel 不触发 touchesBegan

iphone - 我的第一个 iPhone 应用程序测试

android - 浏览器状态/数据/html是否加密?

iphone - 如何在 URL 中转义 unicode?