关于在iPhone微信浏览器以及Safari的音频预加载和播放的问题

开发一个H5游戏,需要预加载一些音频文件,并在特定的情况下播放。目前实现的代码是:

function loadSound(sounds, callback) {
    var toLoadLength = sounds.length;
    var loadLength = 0;
    for (var i = toLoadLength; i--;) {
        var src = sounds[i];
        source[src] = new Audio();
        source[src].addEventListener("canplaythrough", function () {
            loadLength++;
            if (toLoadLength === loadLength) {
                callback();
            }
        });
        source[src].src = gameDate.config.soundSrc + src;
    }
}

在电脑上播放没问题,安卓手机没问题,到了iPhone就不行了,一直卡在加载环节,后来调试发现canplaythrough事件没有触发,callback没有运行。
请问有什么解决办法吗?

阅读 8.5k
3 个回答

问题解决,基于微信的H5页面

//引用微信JS-SDK
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

document.addEventListener("WeixinJSBridgeReady", function () {
    document.getElementById('audio').load();//load重新加载音频,实现苹果预加载
}, false);

我也遇到了这个问题 经过测试 ios端微信浏览器在加载mp3格式的音频时 比加载m4a格式的 要慢很多 估计是微信浏览器先把MP3转码 再进行播放的 解决方法就是把MP3转成m4a 哈哈

新手上路,请多包涵

你可尝试使用音频精灵howler

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏