手机浏览器音频内核的坑

在华为4.4的设备上,发现H5做的一款小游戏不能播放声音,用cocos2d-js的可以正常播放。手机的UA标识:

Mozilla/5.0(Linux;U;Android 4.3; zh-cn;HUAWEI B199 Build/HuaweiB199)
AppleWebKit/534.30(KHTML,link Gecko)
Version/4.0 Mobile Safari/534.30;360 Aphone Browser(6.9.0)

 

报的错是SynataxError : Invalid DestinationNode

通过ajax加载mp3文件后,调用createBufferSource方法得到audio source对象,再调用connect时就报错了。

然后我测试的时候发现audio obj并没有createGaub方法,将它注释掉之后调用start方法报该方法不存在。这时候我搜索到这篇文章,替换一下就OK了

http://stackoverflow.com/questions/19083202/is-web-audio-api-source-start0-supported-on-safari-it-works-just-fine-on-chro

使用noteOn代替start方法(新的API采用start方法,老版本createGain方法也是不支持的),另外一种方法是引入一个补丁js文件来解决

https://github.com/cwilso/webkitAudioContext-MonkeyPatch

 

webaudio的示例教程:http://www.html5rocks.com/en/tutorials/webaudio/intro/?redirect_from_locale=zh

 

额外吐槽一下,cocos2d-js 架构部分写的真是惨不忍睹,多的不说了自己看源码去了,再说要被人拍砖了。

你可能感兴趣的:(手机浏览器音频内核的坑)