以下の XMLHttpRequest オブジェクトの動作がおかしいですが、正しく使用しているかどうかはわかりません。まず、こちらの手順に従って、S3 サーバーでクロスドメイン リクエストを許可する必要がありました。
.open
次に、 Amazon S3 サーバーにアクセスし、GET
"Superman" という名前の mp3 でを実行するメソッドをコーディングしました。これはエラーなしで発生するようですが、これconsole.log
は数行下にあります
console.log("Current 'request.response' value");
console.log(request.response);
であることを示しrequest.response
ますnull
。ただし、request.onload
関数では、request.response
渡されるオブジェクトは、このconsole.log
ステートメントによって型であることが示されAudioBuffer
ます。
console.log("Inside 'request.onload' function");
console.log(buffer);
これら 2 つのステートメントからのコンソール出力のスクリーン ショットを次に示します。
ただし、メソッドで mp3 を再生しようとすると、.onload
下のスクリーン ショットの 205 行目で強調表示されたエラーがスローされます。
私の質問は、私は XMLHttpRequest オブジェクトを使用しており、それは適切に機能していますか?もしそうなら、なぜこのエラーが発生するのですか? メソッドのrequest.response
前または後に何らかの変換を実行する必要がありますか?.onload
var request = new XMLHttpRequest();
request.open('GET', 'http://s3.amazonaws.com/tracks/Superman.mp3', true);
request.responseType = 'arraybuffer';
console.log("Current 'request.response' value");
console.log(request.response);
request.onload = function() {
context.decodeAudioData(request.response, function(buffer){
console.log("Inside 'request.onload' function");
console.log(buffer);
var source = context.createBufferSource();
source.buffer = buffer.byteLength;
source.connect(context.destination);
source.start(0);
}