Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用从服务器附加连续数据的缓冲阵列播放视频_Javascript_Html_Node.js_Socket.io_Live Streaming - Fatal编程技术网

Javascript 如何使用从服务器附加连续数据的缓冲阵列播放视频

Javascript 如何使用从服务器附加连续数据的缓冲阵列播放视频,javascript,html,node.js,socket.io,live-streaming,Javascript,Html,Node.js,Socket.io,Live Streaming,我正在尝试向HTML5视频客户端进行实时http流媒体广播 . 在这个系统中,我使用Websocket传输数据,有一个录像机启动网络摄像头直播视频 服务器只需接收并发送到在该会话中连接的客户端 当客户端连接时,它通过Websocket接收作为缓冲阵列的连续5s视频块 我的主要问题是在客户端,当它接收到第一个块时,如何播放视频 //重新编码中的代码 var mediaRecorder=null; var getUserMedia= navigator.getUserMedia|| navigato

我正在尝试向HTML5视频客户端进行实时http流媒体广播 . 在这个系统中,我使用Websocket传输数据,有一个录像机启动网络摄像头直播视频

服务器只需接收并发送到在该会话中连接的客户端

当客户端连接时,它通过Websocket接收作为缓冲阵列的连续5s视频块

我的主要问题是在客户端,当它接收到第一个块时,如何播放视频

//重新编码中的代码

var mediaRecorder=null;
var getUserMedia=
navigator.getUserMedia||
navigator.webkitGetUserMedia||
navigator.mozGetUserMedia;
getUserMedia(
视频配置,
功能(流){
mediaRecorder=新的mediaRecorder(流);
},
功能(err){
log(“获取本地流失败”,错误);
}
);
var chunks=[]
var区间;
var mimeCodec='视频/mp4;编解码器=“avc1.42E01E,mp4a.40.2”;
函数beginRecorder(){
mediaRecorder.start();
mediaRecorder.ondataavailable=功能(ev){
推送(ev.data);
};
间隔=设置间隔(函数(){
mediaRecorder.stop();
设blob=newblob(块,{type:mimeCodec});
mediaRecorder.start();
emit(“recorder send blob”,{blob:blob});
块=[]
}, 5000);
}
//服务器中的代码

socket.on(“重新编码发送blob”,数据=>{
socket.broadcast.emit(“服务器发送blob”,data.blob);
});
//客户端中的代码

var mediaSource=new mediaSource();
var video=document.getElementById(“主视频”);
video.src=URL.createObjectURL(mediaSource);
var sourceBuffer=[];
var mimeCodec='视频/mp4;编解码器=“avc1.42E01E,mp4a.40.2”;
mediaSource.addEventListener('sourceopen',function(){
sourceBuffer=mediaSource.addSourceBuffer(mimeCodec);
socket.on(“服务器发送blob”,(buf)=>{
sourceBuffer.appendBuffer(新的Uint8Array(buf))
如果(视频暂停){
video.play();//附加第一个块后开始播放。
}
});
});

如果有200名及以上的观众同时观看,我建议使用WebRTC。我们可以使用WebRTC吗?是的,200也可以使用WebRTC观看,录像机将连接并向200名观众发送流。这要求重新编码器必须具有巨大的带宽/CPU使用率。如果观众人数是1000,录像机如何做到这一点