我正在使用游戏库(http://html5quintus.com/)尝试制作一个非常简单的2d平台游戏。我认为这不一定特定于游戏开发。我真的只是想播放一些音频文件。
我正在使用FireFox 31.0 - (最新的AFAIK)。
我正在处理的音频文件都是.mp3文件。似乎导致问题的代码行是:
Q.audioContext.decodeAudioData(request.response, function(buffer) {
callback(key,buffer);
}, errorCallback);
我得到的错误是:
传递给decodeAudioData的缓冲区包含无效内容 无法成功解码。 localhost:50796未捕获的异常: 加载错误:jump.mp3
我觉得最令人困惑的是,如果我直接导航到音频文件(/audio/jump.mp3) - FireFox将正确播放该音频文件。
这里真的很奇怪....加载任何一个.mp3文件后。如果我导航回我的游戏并重新加载它 - 它突然完全有效。所有的声音/背景音乐都可以工作,一切都像在IE和Chrome中一样。但是,如果我不首先手动加载.mp3文件,则不会。
游戏开始后,我可以关闭该标签/打开新标签页并访问该网址,然后再次运行。它似乎继续正常工作,直到我完全退出FireFox。然后,在我第一次直接重新访问.mp3文件之前,游戏将无效。
谁能告诉我这里做错了什么?
答案 0 :(得分:2)
在我的项目中,解码工作好几个月直到今天早上。 所以它不是音频文件,它不是缓存问题,只是这个错误 出现在Firefox(我有v31.0),在其他浏览器(桌面和移动)中它工作正常。 所以我敢打赌它是一个火狐漏洞,不幸的是我还没有解决方案。 如果我找到了什么会更新。
答案 1 :(得分:1)
作为解决方案(适用于FireFox 31);如果我在静态加载页面添加常规音频标签,当游戏引擎开始加载它的资源时,FireFox将接受.mp3文件。
<audio src="audio/coin.mp3"></audio>
如果我包含该行,一切都适用于所有主流浏览器。如果我删除该行,FireFox 30可以正常工作,但FireFox 31会失败:(哎呀。