AudioServices (Easy), AVAudioPlayer (Medium), OpenAL (Hard & Overkill?)
Posted
技术标签:
【中文标题】AudioServices (Easy), AVAudioPlayer (Medium), OpenAL (Hard & Overkill?)【英文标题】: 【发布时间】:2011-02-03 07:15:43 【问题描述】:我需要在整个 iphone 应用程序中播放声音(每个大约 5 秒)。当它们被触发时,它们需要立即播放。
目前我正在使用 Audioservices 并且(您可能知道)第一次播放声音时它会滞后,然后每次都完美之后。是否有一些足够聪明的代码可以预加载 AudioServices 声音(也许通过静默播放?)。我读过以编程方式调整系统音量会导致您的应用被拒绝,所以这不是一个选项。据我所见,似乎 AudioServices 不是用于音量校正的。
我研究过 OpenAL,虽然可行,但似乎有点过头了。 AVAudioPlayer 似乎是一个更好的选择,我目前正在将它用于背景音乐。扩展我的音乐播放器以处理“音板”可能是我最后的手段。
关于 OpenAL 的话题,有谁知道有一个不错的(适用于应用商店的)iPhone 的 OpenAL 包装器的地方吗?
提前致谢
【问题讨论】:
【参考方案1】:Finch 可能非常适合您。它是 OpenAL 的一个小型包装器,具有非常低的延迟和简单的 API。另请参阅所有 SO questions tagged ‘Finch’。
【讨论】:
【参考方案2】:如果您使用 AVAudioPlayer,您可以在初始化对象时调用 prepareToPlay
,以减少调用 play
和启动音频之间的延迟。
【讨论】:
最后一次检查,即使调用prepareToPlay
,仍有大约20毫秒的延迟。如果发帖人能接受,这可能是完美的解决方案。以上是关于AudioServices (Easy), AVAudioPlayer (Medium), OpenAL (Hard & Overkill?)的主要内容,如果未能解决你的问题,请参考以下文章
预加载通过 iPhone AudioServices 播放的声音
ava数据集可视化ava数据集ID可视化 A Video Dataset of Spatio-temporally Localized Atomic Visual Actions