Safari和移动浏览器上的Soundjs

时间:2013-12-05 13:19:39

标签: audio safari html5-audio createjs

目前我的音频无法在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时调用的函数内。

2 个答案:

答案 0 :(得分:4)

该代码看起来应该有效。 Web Audio最初在iOS设备上静音,但是当在用户事件内部调用播放时,它会取消静音。

有几种可能性(没有看到其余的代码):

  1. 您正在使用iPad 1,它不支持网络音频,并且由于严重限制而默认禁用html音频。

  2. 在调用play之前,您没有等待音频完成加载:

    queue.addEventListener(“complete”,loadComplete);

  3. 音频文件路径不正确,因此负载失败,您可以通过侦听错误事件来检测。

  4. 您正在使用Safari不支持的mp3文件的非默认编码。通常情况下,在其他浏览器中也会出现这种情况。

  5. Safari需要快速播放html音频,因此可能会出现问题。

  6. 使用createjs.Sound.registerPlugins,SoundJS被设置为使用不受支持的移动插件,例如FlashPlugin。您可以使用以下方法检查当前插件:

    createjs.Sound.activePlugin.toString();

  7. 您可能会发现Mobile Safe Tutorial很有用。希望有所帮助。

答案 1 :(得分:0)

有一种方法可以破解它,播放空白的mp3然后播放音频。

首先必须在mainfest数组中加载空mp3:

var manifest = [
    ...
    { id: "empty", src: 'assets/empty.mp3|assets/empty.ogg' }
];

...

在播放声音之前,播放空白的mp3:

createjs.Sound.play("empty");

createjs.Sound.play("correct");