我正在尝试使用Web Audio API
对通过Node.js和Socket.IO流式传输到浏览器的MP3文件块进行解码和播放。
在这种情况下,我的唯一选择是为每个接收到的音频数据块创建一个新的AudioBufferSourceNode
,还是可以创建单个AudioBufferSourceNode
并将新的音频数据简单地附加到源节点的buffer
属性末尾?
目前,这是我接收我的MP3块、解码它们并安排它们进行播放的方式。我已经验证了每个接收到的块都是“有效的MP3块”,并且已被Web Audio API成功解码。
audioContext = new AudioContext();
startTime = 0;
socket.on('chunk_received', function(chunk) {
audioContext.decodeAudioData(toArrayBuffer(data.audio), function(buffer) {
var source = audioContext.createBufferSource();
source.buffer = buffer;
source.connect(audioContext.destination);
source.start(startTime);
startTime += buffer.duration;
});
});
非常感谢任何关于如何最好地使用新音频数据“更新”Web Audio API播放的建议或见解。