2017-01-24 18 views
9

編集:私はちょうど新しい流星プロジェクトを作成し、それは働いた:Dwow.Butそれはまだ私のコアプロジェクトで働いていない..私は別の設定があるように見えます。Meteor DOMException:オーディオデータをデコードできません

私のMeteor.jsプロジェクトには、にある4 .mp3ファイルがあります。 私はこれら.mp3をロードする:これはgoogle Chrome上で動作しますが、私はmeteor run android-device経由でアプリをビルドするとき、私は次のエラーメッセージを取得

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(); 

.pngまたは.jpg作品をロードするので、これはバグであればDOMException: Unable to decode audio data を私は疑問に思いますモバイル版でも問題ありません。私はmeteor add crosswalkの横にパッケージをインストールしていませんが、このヘルプを削除することもできません。

+0

のChromeブラウザ上で動作されていませんか? –

+0

これを読んでください:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/decodeAudioData –

+0

@lolioあなたはこのリンクを見る機会を得ましたか? - http://stackoverflow.com/questions/38589614/webaudio-streaming-with-fetch-domexception-decode-audio-dataストリームのチャンクがうまくいく可能性があります – Gandhi

答えて

5

ローカルリソースを取得するためにhttp要求を行う必要はありません。あなたはちょうど地方のURLを参照することができます。 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(); 
    } 
    } 

デバイスでは、サウンドファイルを非同期にロードしてから再生します。ブラウザでは、読み込んで同期再生します。

+0

あなたの返信でMikkel、thxはdecodeAudioの最初のパラメータを配列バッファにする必要がありますか?私はそこからarraybufferを取得する方法を理解していないのですか? – greedsin

+0

あなたは単にそれを演奏する以上の音でやっていますか? – Mikkel

+0

はい空間オーディオ(ウェブオーディオAPI)に使用します – greedsin

関連する問題