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 播放的声音

銆怞ava123銆慗ava浠g爜鐨勫彲瑙嗗寲

如何使用 AVA 进行单元测试?

ava数据集可视化ava数据集ID可视化 A Video Dataset of Spatio-temporally Localized Atomic Visual Actions

AVA实战总结:面向未来的Node.js测试框架

使用 AVA 和 TypeScript 测试 Nuxtjs 应用程序