起因:牛客网在 chrome 无法打开摄像头,牛客网摄像头调试,牛客网在线面试测试。(事实上仅仅是 chrome 无法打开摄像头,Edge 等都没问题)
我的系统环境:
- OS: Win10 1903 专业版
- chrome ver: Chrome/75.0.3770.142
- chrome UA: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36
然后一番瞎折腾,问题莫名其妙解决了。转机是我修改 chrome 应用系统用户权限后,win10设置中关闭再打开相机、麦克风隐私设置后解决的,就是打开他俩下面相关的所有使用权限。
辛酸历程(1-5 确诊问题,6-7 救治):
- 在各大国内网站论坛,搜寻无果,但找到了另外一个测试网页 网页摄像头,发现其下面提示“您的浏览器不支持
getUserMedia
接口,请下载支持此特性的xxxx。” -
经历了禁用 chrome插件、重装 chrome、重装摄像头驱动,仍然无济于事。
-
考虑探究写上面的
getUserMedia
接口,谷歌找到了官方文档:MediaDevices.getUserMedia,发现了 WebRTC -
谷歌 WebRTC,找到了其官网 WebRTC,找到了 code samples:github repo: WebRTC,在线测试页面 WebRTC samples,此页面下有摄像头、麦克风等的测试页面,我在测试摄像头页面,发现了错误 video source NotReadableError,以及控制台的 DOMException 错误,在 github repo: WebRTC 页面下找到其讨论论坛discuss-webrtc
-
讨论论坛里搜索 NotReadableError,找到了这个回复 by Harald Alvestrand,他的意思是如果出现了 DOMException 与 NotReadableError 错误一定是权限问题,而不是摄像头或者其他硬件、驱动问题。
-
明白是权限问题后,我分别测试修改了应用“安全”下“Users”的“完全控制”等权限、“以管理员身份运行” chrome 仍然不行。如下图:
figure 1 -
想起来 win10 设置里有相机、麦克风等隐私设置,发现相机、麦克风下的权限都已经打开,于是又重新关闭再打开,如下图2。这样莫名其妙 chrome 又能打开摄像头了,并且在相机使用历史可以看到,如下图3。
figure 2figure 3