Ich habe einen Server, der Ogg-codierte Audiodaten an einen Client bereitstellt, der ihn mit einem http GET anfordert. Wenn ich injizieren die GET-Route in den HTML-Audio-src es das Audio empfängt und spielt sie:Eine binäre Zeichenfolge mit dem HTML-Audio-Tag wiedergeben
function working(text) {
var downloadURL = 'http://localhost:8080/nlc/synthesize' +
'?text=' + encodeURIComponent(text);
audio.pause();
audio.src = downloadURL;
audio.play();
};
Wenn ich einen http-GET-Aufruf (in AngularJS) verwenden und versuchen, die Antwort in den HTML-Audio-src zu injizieren es wird es nicht spielen:
function not_working(text) {
$http.get('http://localhost:8080/nlc/synthesize' + '?text=' + encodeURIComponent(text)).then(function(response) {
console.log(response);
audio.pause();
audio.src = encodeURIComponent(response);
audio.play();
};
Das Protokoll der Antwort auf die ‚Daten‘ eine JSON mit einem Binärkette zeigt Schlüssel:
Object {data: "OggS�1�/ڂ OpusHead��]OggS…�xs���������������������������������", status: 200, config: Object, statusText: "OK"}
gibt es einen Weg, um die hTTP-GET-Antwort int zu dekodieren o etwas, was ich in die audio src injizieren kann?
Ich weiß nicht über eckig, aber mit XMLHttpRequest, yo Sie können ihren '.responseType' auf' 'blob '' setzen und dann aus dieser Blob-Antwort ('URL.createObjectURL (this.response)') eine 'objectURL' erzeugen, die Sie als' src' übergeben können von Ihrem Audioelement. Wenn Ihre Zielbrowser die AudioContextAPI unterstützen, können Sie andernfalls die Methode ['AudioContext.decodeAudioData()'] (https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/decodeAudioData) verwenden . – Kaiido
Danke, deine Antwort hat mir sehr geholfen. – trahloff