Safari 和移动浏览器上的 Soundjs
Posted
技术标签:
【中文标题】Safari 和移动浏览器上的 Soundjs【英文标题】:Soundjs on safari and mobile browsers 【发布时间】:2013-12-05 13:19:38 【问题描述】:目前我的音频无法在 Safari 和移动设备上播放。 它在 FireFox、Chrome 和 IE 上的普通电脑上运行良好
var manifest = [
id: "correct", src: 'assets/correct.mp3|assets/correct.ogg' ,
id: "wrong", src: 'assets/wrong.mp3|assets/wrong.ogg'
];
var queue = new createjs.LoadQueue();
queue.installPlugin(createjs.Sound);
queue.loadManifest(manifest, true);
我这样调用播放函数;
createjs.Sound.play("correct");
这个函数写在一个当用户按下 div 时被调用的函数中。
【问题讨论】:
【参考方案1】:该代码看起来应该可以工作。 Web Audio 在 ios 设备上最初是静音的,但是当在用户事件中调用 play 时它会取消静音。
有几种可能性(没有看到其余的代码):
您使用的 iPad 1 不支持网络音频,并且由于严重限制默认禁用 html 音频。
在调用 play 之前,您无需等待音频完成加载:
queue.addEventListener("完成", loadComplete);
音频文件路径不正确,因此加载失败,您可以通过侦听错误事件来检测。
您正在对 Safari 不支持的 mp3 文件使用非默认编码。通常,这也会在其他浏览器中中断。
Safari 需要 quicktime 才能播放 html 音频,所以这可能是个问题。
使用 createjs.Sound.registerPlugins,SoundJS 被设置为使用不受支持的移动插件,例如 FlashPlugin。您可以通过以下方式检查您当前的插件:
createjs.Sound.activePlugin.toString();
您可能会发现Mobile Safe Tutorial 很有用。希望对您有所帮助。
【讨论】:
【参考方案2】:有办法破解它,播放一个空的 mp3 然后播放音频。
它必须首先加载mainfest数组中的空mp3:
var manifest = [
...
id: "empty", src: 'assets/empty.mp3|assets/empty.ogg'
];
...
在播放声音之前,先播放空mp3:
createjs.Sound.play("empty");
createjs.Sound.play("correct");
【讨论】:
以上是关于Safari 和移动浏览器上的 Soundjs的主要内容,如果未能解决你的问题,请参考以下文章
iOS 移动浏览器和 OS X Safari 上的 Flexbox 奇怪行为
移动 Safari/Chrome 上的 Angular 应用程序中出现严重的键盘延迟
HTML5 视频标签在移动 Chrome 上的奇怪行为,但适用于 SAFARI