iphone - iPhone 游戏中用什么来播放声音?

标签 iphone performance audio avaudioplayer finch

我有一个性能密集型 iPhone 游戏,我想为其添加声音。似乎有大约三个主要选择:(1)AVAudioPlayer,(2)音频队列和(3)OpenAL。我不想仅仅为了播放示例而编写几页低级代码,因此我想使用 AVAudioPlayer。问题在于,它似乎会影响性能 - 我使用 CFAbsoluteTimeGetCurrent 进行了简单的测量,并且 play 消息似乎需要 9 到 30 毫秒才能完成。考虑到 25 ms == 40 fps,这真是太糟糕了。

当然,有 prepareToPlay 方法可以加快速度。这就是为什么我编写了一个简单的类,它保留了几个 AVAudioPlayer 供其使用,预先准备好它们,然后使用准备好的播放器播放示例。没有雪茄,仍然需要我上面提到的 ~20 毫秒。

这样的性能对于游戏来说是无法使用的,那么在iPhone上用什么来播放性能还不错的声音呢?我对 AVAudioPlayer 做错了什么吗?您使用音频队列播放声音吗? (在 2.2 发布之前,我已经写过一些类似于 AVAudioPlayer 的东西,我很乐意保留这种经历。)你使用 OpenAL 吗?如果是,是否有一种简单的方法来使用 OpenAL 播放声音,或者您必须编写几页代码?

<小时/>

更新:是的,使用 OpenAL 播放声音是 fairly simple .

<小时/>

最佳答案

AVAudioPlayer 对于游戏音频来说非常边缘化。通过调整其中一个示例来解决 AudioQueue 或 OpenAL 绝对是一种可行的方法。这样延迟就更容易控制。

关于iphone - iPhone 游戏中用什么来播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986983/

相关文章:

javascript - 从 soundcloud 接收不同文件格式的流

c# - mono touch-iphone 平台上最后调用的函数

iphone - 通过MD5算法加密成Unicode(UCS-16)格式的32位字符串

iphone - iOS 应用分发问题

Javascript - 命名空间嵌套是否有任何硬限制(或性能影响)?

javascript - 如何使用Web Audio API更改点击时的音频位置?

iphone - 如何在 iPhone 中生成推送通知?

java - if 语句的低效使用 - Android

sql-server - 添加数据长度条件使查询变慢

c# - 如何在具有良好音频的Unity 5.6中更改视频的速度?