【发布时间】:2012-03-12 22:49:41
【问题描述】:
应用程序:两款拥有庞大客户群的 Cocos2d 通用 iOS 游戏。
问题:几个月前(2011 年)报告开始出现,声音会随机中断,只有一些声音会在应用程序中播放,其他声音不会。这个问题只能通过设备重启来解决。
重要说明和详细信息:
SAME 代码和 SAME 声音文件可以正常播放一年多 没有此类错误报告。我希望我能确定一个日期,但我 相信问题始于 iOS 更新。
该错误非常难以重现。我亲眼所见 一次,但我没有运气再次引起它。然而我们得到1-2 每天支持同一问题的电子邮件,其中一些来自 形成差评。如果我不得不从空中抽出一个数字,我会 猜想我们正在寻找千分之一的发病率。似乎可能更多 在 iPad 上很常见,但我不确定。
重启设备是解决问题的唯一方法。 重新启动应用程序没有任何作用,删除应用程序并重新安装 什么都不做,必须关机再开机。
几周前,为了盲目修复,我抛弃了 Cocos2d 声音引擎并将其中一个应用程序切换到 ObjectAL(另一个 基于 openAL 的声音引擎),希望它可以解决问题。 它没有,同样的问题正在发生。正如你所注意到的,这两个 只是 OpenAL 的接口。
声音文件本身已使用 wavs 转换为 cafs 苹果的推荐方法( https://developer.apple.com/library/ios/#codinghowtos/AudioAndVideo/_index.html ),尽管我们也使用了 -c 1 标志来使它们成为单通道。
为了清楚起见,该错误与通常的声音无关 问题(静音开关、音量)。一部分声音继续 播放正常,但在设备恢复之前,它们将永远不会再次播放 关闭并重新启动。
如果有人有任何想法,我会全力以赴,我将非常感谢您的帮助。我在这里束手无策,试图修复一个我无法重新创建的持久性错误,这似乎是由我无法控制的事情引起的。
【问题讨论】:
-
听起来像是 iOS 的 OpenAL 实现中的一个深层错误,可能但不一定是 A4 中 GPUnit 的硬件问题。为什么?好吧,you 在代码中可能做错的任何事情都应该通过应用程序重新启动来修复。我认为您应该向您的客户解释这一点并向 Apple 提交错误报告。只是为了好奇。如果用户安装了您的两个应用程序并且其中一个开始出现问题,那么另一个应用程序的行为如何?询问受影响的客户。
-
@peter:我可能有同样的问题,你找到解决办法了吗?
-
几年前,当我查看 Apple 的 OpenAL 源代码时,它充满了线程错误,并且很容易被繁重的测试导致失败(每秒播放 20 声,让计算机在一夜之间运行)。听起来什么都没有改变。
-
我刚刚将声音引擎从 cocos2dx 中的 CocosDenshion 更改为 ObjectAL 希望解决随机声音丢失的问题,但我又遇到了这个问题。我运气不好。
-
这个问题可以持续重现。使用 openAL 循环播放您的声音文件。确保您的应用已启用背景模式音频。播放应用程序和音效。转到背景。 (声音仍在播放)。打开另一个使用音频的应用程序...(您的应用程序现在不播放声音)。当您将应用程序置于前台时,openAL 的代码仍会运行,但不会出现声音。也没有错误。在不重新启动设备的情况下获得声音的唯一方法是进行适当的释放(清理所有内容)然后进行适当的初始化。
标签: ios audio cocos2d-iphone openal