Ich versuche, einen unendlichen Stream aus der Abruf-API mit Chrome 51 zu spielen. (Ein Webcam-Audiostream wie Microsoft PCM, 16 Bit, Mono 11025 Hz)WebAudio Streaming mit Abruf: DOMException: Kann Audiodaten nicht decodieren
Der Code funktioniert mit mp3s Dateien fast OK, mit Ausnahme einiger Pannen, aber es überhaupt aus irgendeinem Grunde mit WAV-Dateien nicht funktioniert i „DOMException: nicht imstande, Audiodaten zu dekodieren“ erhalten wird
Der Code von diesem angepasst Antwort Choppy/inaudible playback with chunked audio through Web Audio API
Irgendeine Idee, wenn es möglich ist, es mit WAV-Streams arbeiten zu lassen?
function play(url) {
var context = new (window.AudioContext || window.webkitAudioContext)();
var audioStack = [];
var nextTime = 0;
fetch(url).then(function(response) {
var reader = response.body.getReader();
function read() {
return reader.read().then(({ value, done })=> {
context.decodeAudioData(value.buffer, function(buffer) {
audioStack.push(buffer);
if (audioStack.length) {
scheduleBuffers();
}
}, function(err) {
console.log("err(decodeAudioData): "+err);
});
if (done) {
console.log('done');
return;
}
read()
});
}
read();
})
function scheduleBuffers() {
while (audioStack.length) {
var buffer = audioStack.shift();
var source = context.createBufferSource();
source.buffer = buffer;
source.connect(context.destination);
if (nextTime == 0)
nextTime = context.currentTime + 0.01; /// add 50ms latency to work well across systems - tune this if you like
source.start(nextTime);
nextTime += source.buffer.duration; // Make the next buffer wait the length of the last buffer before being played
};
}
}
Verwenden Sie einfach play ('/ Pfad/zu/mp3'), um den Code zu testen. (auf dem Server muss CORS aktiviert sein oder sich in der gleichen Domäne befinden, in der das Skript ausgeführt wird)
Warum funktioniert dieser Code nicht auf Firefox? –
unterstützt mit einigen Flags auf: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream/getReader#Browser_compatibility – jujule