Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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 getUserMedia中获得用户阻止网络摄像头的回调?_Javascript_Webrtc_Webcam - Fatal编程技术网

如何在Javascript getUserMedia中获得用户阻止网络摄像头的回调?

如何在Javascript getUserMedia中获得用户阻止网络摄像头的回调?,javascript,webrtc,webcam,Javascript,Webrtc,Webcam,我使用navigator.mediaDevices.getUserMedia在网页中启动网络摄像头流。当用户从选项卡选项(safari上的“暂停”和chrome中的“始终阻止摄影机”选项)显式阻止摄影机时,我希望获得一些回调事件。 我附上chrome屏幕截图只是为了解决这个问题 当用户第一次允许使用权限,然后使用上述选项阻止摄像头时,我的代码中不会触发任何事件。我试图寻找这样的事件,但没有找到任何东西。我只是想向用户展示一些关于阻止摄像头的信息。下面是我用来启动网络摄像头流的完整代码 函数st

我使用
navigator.mediaDevices.getUserMedia
在网页中启动网络摄像头流。当用户从选项卡选项(safari上的“暂停”和chrome中的“始终阻止摄影机”选项)显式阻止摄影机时,我希望获得一些回调事件。 我附上chrome屏幕截图只是为了解决这个问题

当用户第一次允许使用权限,然后使用上述选项阻止摄像头时,我的代码中不会触发任何事件。我试图寻找这样的事件,但没有找到任何东西。我只是想向用户展示一些关于阻止摄像头的信息。下面是我用来启动网络摄像头流的完整代码

函数startCamera(){
如果(流)返回;
navigator.mediaDevices.getUserMedia({video:true,audio:false})
.然后(功能){
stream=s;
video.srcObject=s;
video.play();
控制台日志(“启动摄像头”);
isCameraCap=true;
})
.catch(函数(err){
//当用户不允许权限时执行
log(`Stop camera at error${err}`);
log(“发生错误!”+err);
isCameraCap=true;
});
video.addEventListener(“canplay”,功能(ev){
如果(!流){
videoWidth=video.videoWidth;
videoHeight=video.videoHeight;
video.setAttribute(“宽度”,videoWidth);
video.setAttribute(“高度”,videoHeight);
canvasOutput.width=视频宽度;
canvasOutput.height=视频高度;
流=真;
}
startVideoProcessing();
},假);
}
一旦你有了音乐流,你就可以听音乐了。
这将向您发出捕获已停止的信号,而不给您确切的原因(即,当用户拔下网络摄像头时,它也可能触发)

使用本文档中建议的相同
errorcallback
,当用户拒绝权限时触发,但在允许权限后阻止时不触发。
stream.getTracks().forEach(track => track.onended = () => console.log('stopped'))