JavaScriptを使ってサーバーからオーディオファイルを取得して再生したいと考えています。しかし、私のコードのajax呼び出しは決してコールバックのようではなく、JavaScriptで正しくオーディオを扱うかどうかもわかりません。JavaScript ajaxコールでPHPパススルーからバイナリデータを取得するにはどうすればよいですか?
次のPHPファイルは、サーバー上のオーディオファイルを返します。
<?php
header('Access-Control-Allow-Origin: *');
$name = './audiofiles/audio.wav';
$fp = fopen($name, 'rb');
header("Content-Type: binary");
header("Content-Length: " . filesize($name));
fpassthru($fp);
exit;
?>
(少なくともどうするかthatsの)スクリプトはAJAXを使用して、JavaScriptから呼び出され、返されたオーディオデータをブラウザで再生されます。
function playSample(e,q) {
console.log("requesting audio from server")
$.ajax({
url: "https://audioserver.com/getaudio.php",
type: "GET",
dataType: "arraybuffer",
processData: false,
success: function(result){
console.log("received audio, starting to play now")
var buffers = result;
var newSource = audioContext.createBufferSource();
var newBuffer = audioContext.createBuffer(2, buffers[0].length, 16000);
newBuffer.getChannelData(0).set(buffers[0]);
newSource.buffer = newBuffer;
newSource.connect(audioContext.destination);
newSource.start(0);
}
});
}
私はここで間違っていますか?
私のコードをあなたの提案に適合させましたが、今はオーディオをデコードできないというエラーが発生します。任意のアイデアをどのようにこれを解決するには? @Musa上の私の編集を参照してください – user2212461
@ user2212461完全に質問を変更しないでください。あなたは2つのことのうちの1つを行うことができます。 1.新しい質問をするか、2.質問の下部に編集セクションを追加します。 – Musa
は私のフォローアップの質問をここに追加しました:http://stackoverflow.com/questions/36093768/how-can-i-get-audio-file-from-xmlhttprequest-that-can-be-decoded-by-decodeaudiod @Musa – user2212461