Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 延迟显示网络摄像头/摄像头流-webrtc_Javascript_Camera_Webrtc_Webcam_Getusermedia - Fatal编程技术网

Javascript 延迟显示网络摄像头/摄像头流-webrtc

Javascript 延迟显示网络摄像头/摄像头流-webrtc,javascript,camera,webrtc,webcam,getusermedia,Javascript,Camera,Webrtc,Webcam,Getusermedia,我做了一个简单的设置,获取网络摄像头/手机摄像头流并将其传递,在HTML2D画布上绘制 但是我一直很难弄清楚如何在几秒钟的延迟内显示流。有点像延迟反射镜 我试着玩ctx.globalAlpha=0.005但这给了我一个重影效果,而不是“延迟”流 你知道如何做到这一点吗 下面的代码片段在这里不起作用,可能是因为安全问题,但这里有一支笔: var宽度=0,高度=0; var canvas=document.createElement('canvas'), ctx=canvas.getCont

我做了一个简单的设置,获取网络摄像头/手机摄像头流并将其传递,在HTML2D画布上绘制

但是我一直很难弄清楚如何在几秒钟的延迟内显示流。有点像延迟反射镜

我试着玩
ctx.globalAlpha=0.005但这给了我一个重影效果,而不是“延迟”流

你知道如何做到这一点吗

  • 下面的代码片段在这里不起作用,可能是因为安全问题,但这里有一支笔:

var宽度=0,高度=0;
var canvas=document.createElement('canvas'),
ctx=canvas.getContext('2d');
document.body.appendChild(画布);
var video=document.createElement('video'),
轨道;
video.setAttribute('autoplay',true);
window.vid=视频;
函数getWebcam(){
navigator.mediaDevices.getUserMedia({video:true})。然后(函数(流){
var videoTracks=stream.getVideoTracks();
var newStream=newmediastream(stream.getVideoTracks());
video.srcObject=newStream;
video.play();
track=stream.getTracks()[0];
},功能(e){
console.error('Rejected!',e);
});
}
getWebcam();
变量旋转=0,
环框,
centerX,
中心,
twoPI=Math.PI*2;
函数循环(){
loopFrame=requestAnimationFrame(循环);
//ctx.globalAlpha=0.005;
ctx.drawImage(视频,0,0,宽度,高度);
ctx.restore();
}
函数startoop(){
loopFrame=requestAnimationFrame(循环);
}
video.addEventListener('loadedmetadata',function(){
宽度=画布。宽度=视频。视频宽度;
高度=画布高度=视频高度;
centerX=宽度/2;
中心Y=高度/2;
startoop();
});
canvas.addEventListener('click',function(){
如果(轨道){
如果(track.stop){track.stop();}
track=null;
}否则{
getWebcam();
}
});
视频,
帆布{
最大宽度:100%;
高度:自动;

} /代码> 您可能需要考虑将您获得的视频数据存储在一系列数组中。这可能意味着首先将播放延迟n秒

基本上在第1帧,您将视频提要存储到一个数组中,而不绘制任何内容。这一直发生到第1000帧(1秒)。此时,基于阵列的第一个元素开始绘制


一旦绘制该框架,将其从数组中移除并添加新的框架。

< P>您可能需要考虑将您获得的视频数据存储在一系列数组中。这可能意味着首先将播放延迟n秒

基本上在第1帧,您将视频提要存储到一个数组中,而不绘制任何内容。这一直发生到第1000帧(1秒)。此时,基于阵列的第一个元素开始绘制

绘制该帧后,将其从阵列中删除并添加新帧