1
私はWebSocketからaac(adts)ストリーミングを再生する必要があります。インターネットを検索して、aac.jsがそれを行うことができますが、遅延はほぼ2〜5秒です。WebAudio WebSocketからのAACストリーミング再生
そして私は、WebAudioを使用している人もいます。私は、コードが、デコーダリターンエラー一部のパケットの後に(常にではないが、繰り返しエラー)以下でそれを試してみてください。
Uncaught (in promise) DOMException: Unable to decode audio data
私のサンプルのjavascript:
var context = new AudioContext();
var nextStartTime = 0;
var audioWs = new WebSocket("ws://" + hostip + ":8084");
audioWs.binaryType = 'arraybuffer';
audioWs.onopen = function(evt) {
console.log("onOpen");
bexit = 0;
};
audioWs.onclose = function(evt) {
console.log("close");
};
audioWs.onmessage = function(evt) {
var blob = evt.data;
if (blob.slice == undefined) {
console.log("undefined message");
return;
}
decodeAudio(blob);
};
audioWs.onerror = function(evt) {
console.log("error");
};
var decodeAudio = function(blob) {
context.decodeAudioData(
blob,
function(buffer) {
if (!buffer) {
console.log('error decoding file data: ' + url);
return;
}
console.log("playback buffer");
playBuffer(buffer);
},
function(error) {
console.error("decodeAudioData error", error);
});
};
var playBuffer = function(buffer) {
var source = context.createBufferSource();
source.buffer = buffer;
if(nextStartTime == 0){
nextStartTime = context.currentTime + buffer.duration/2;
}
source.connect(context.destination);
source.start(nextStartTime);
nextStartTime += buffer.duration;
};
私はそれがデータによって引き起こされるかどうかわからないのWebSocketから受け取りましたあまりにも速すぎるとデコーダエラーが発生します!どのように修正する必要がありますか?
WebAudio APIを使用してこのタスクを実行するのは良い方法ではないでしょうか?
ストリーミング再生用にMedia Source Extensionを試してください。 – beetlej