【问题标题】:Soundjs on safari and mobile browsersSafari 和移动浏览器上的 Soundjs
【发布时间】: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 时被调用的函数中。

【问题讨论】:

    标签: audio safari html5-audio createjs


    【解决方案1】:

    该代码看起来应该可以工作。 Web Audio 在 iOS 设备上最初是静音的,但是当在用户事件中调用 play 时它会取消静音。

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

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

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

      queue.addEventListener("完成", loadComplete);

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

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

    5. Safari 需要 quicktime 才能播放 html 音频,所以这可能是个问题。

    6. 使用 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");
      

      【讨论】:

        猜你喜欢
        • 2021-12-15
        • 2020-03-02
        • 2011-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多