当前位置:  开发笔记 > 编程语言 > 正文

Meteor DOMException:无法解码音频数据

如何解决《MeteorDOMException:无法解码音频数据》经验,为你挑选了1个好方法。

编辑:我刚刚创建了一个新的流星项目,它工作:D哇.但它仍然无法在我的核心项目上工作..看起来像我有不同的设置.

在我的Meteor.js项目中,我有4个.mp3文件位于public/sounds/xyz.mp3.我加载这些.mp3:

 let soundRequest = new XMLHttpRequest();
    soundRequest.open('GET', this._soundPath, true);
    soundRequest.responseType = 'arraybuffer';
    let $this = this;
    soundRequest.onload = function () {
        Core.getAudioContext().decodeAudioData(soundRequest.response, function (buffer) {
            $this.source.buffer = buffer;
            $this.source.loop = true;
            $this.source.connect($this.panner);
        });
    };
soundRequest.send();

这个工作google Chrome,但当我通过构建应用程序时meteor run android-device,我收到以下错误消息:DOMException: Unable to decode audio data 我想知道这是一个错误,因为加载.png.jpg在移动版本中工作得很好.我没有安装任何软件包,meteor add crosswalk但卸载这也没有帮助.



1> Mikkel..:

您不需要执行http请求来获取本地资源.您可以参考本地网址.在Android设备上,路径是不同的.看到这段代码:

  function getSound(file) {
    var sound = "/sounds/"+file;
    if (Meteor.isCordova) {
      var s;
      if (device.platform.toLowerCase() === "android") {
        sfile = cordova.file.applicationDirectory.replace('file://', '') + 'www/application/app' + sound;
      }
      else {
        sfile = cordova.file.applicationDirectory.replace('file://', '') + sound;
      }
      var s = new Media(
        sfile,
        function (success) {
          console.log("Got sound "+file+" ok ("+sfile+")");
          s.play();
        },
        function (err) {
          console.log("Get sound "+file+" ("+sfile+") failed: "+err);
        }
      );
    } else {
      var a = new Audio(sound);
      a.play();
    }
  }

在设备上,它以异步方式加载声音文件,然后播放它.在浏览器中,它只是加载并同步播放.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有