function getBlob2(data,len){
var buffer = new ArrayBuffer(len);
var dataview = new DataView(buffer);
writeUint8Array(dataview,0,data,len);
return new Blob([dataview], { type: 'audio/wav' });
}
websocket.onmessage = function got_packet(msg) {
var data = msg.data;
var datalen = msg.data.size;
{
var reader = new FileReader();
reader.onload = function(evt)
{
if(evt.target.readyState == FileReader.DONE)
{
var data = new Uint8Array(evt.target.result);
/*
// 方式1 ,ok
audioContext.decodeAudioData(evt.target.result, function(buffer) {//解码成pcm流
var audioBufferSouceNode = audioContext.createBufferSource();
audioBufferSouceNode.buffer = buffer;
audioBufferSouceNode.connect(audioContext.destination);
audioBufferSouceNode.start(0);
}, function(e) {
alert("Fail to decode the file.");
});
*/
//方式2 ok
audio.src = window.URL.createObjectURL(getBlob2(data,data.length));
}
}
reader.readAsArrayBuffer(data);
}
最近也在做web 播放实时视频流,并最终搞定了,采用2种方式都可以,主要代码贴出来了,提供大家学习吧。