在iOS中实施音频采样率

时间:2013-08-16 19:34:17

标签: iphone ios ipad audio core-audio

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

AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareSampleRate,propSize,&hwSampleRate)

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

1 个答案:

答案 0 :(得分:3)

正如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

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