Javascript 使用socket.io从服务器接收ArrayBuffer时,Web音频API播放延迟
让我从一个事实开始,我对web开发游戏相当陌生,一两周来几乎没有使用过socket.io。我尝试播放从socket.io接收的ArrayBuffer中的音频,该文件对应于使用Web audio API传输的MP3文件。ArrayBuffer被WebAudio成功解码,但我遇到的唯一问题是,在收到ArrayBuffer的初始块后,需要大约10秒钟才能开始播放这首歌 我的理解是,它等待整个文件流化,然后开始播放??当第一组块到达时,有没有更好的方法来播放曲目 这是我目前使用它的方式:Javascript 使用socket.io从服务器接收ArrayBuffer时,Web音频API播放延迟,javascript,websocket,socket.io,web-audio-api,Javascript,Websocket,Socket.io,Web Audio Api,让我从一个事实开始,我对web开发游戏相当陌生,一两周来几乎没有使用过socket.io。我尝试播放从socket.io接收的ArrayBuffer中的音频,该文件对应于使用Web audio API传输的MP3文件。ArrayBuffer被WebAudio成功解码,但我遇到的唯一问题是,在收到ArrayBuffer的初始块后,需要大约10秒钟才能开始播放这首歌 我的理解是,它等待整个文件流化,然后开始播放??当第一组块到达时,有没有更好的方法来播放曲目 这是我目前使用它的方式: socket.
socket.on('browser:buffer', function(data) {
console.log(data.buffer);
source = audioContext.createBufferSource();
audioContext.decodeAudioData(data.buffer, function(decodedData) {
source.buffer = decodedData;
source.connect(audioContext.destination);
source.loop = true;
source.connect(audioContext.destination);
source.start(0);
});
}, function(error) {
console.error("decodeAudioData error", error);
});
是的,您可以通过
如果您实际上不需要WebAudio,则其他选项是最简单的:
var sound = new Audio("myaudio.mp3");
sound.play()
是的,当我意识到WebAudio比我的用例更强大时,我最终使用了第二个选项。
var sound = new Audio("myaudio.mp3");
sound.play()