问题描述

今天做某公司笔试的时候,出现了一个很诡异的情况,我使用Chrome浏览器登录该平台,在摄像头验证环节,我的摄像头正常工作了(补光灯亮了),但是没有捕捉到任何图像(如下图所示)。
在这里插入图片描述
该平台提供了摄像头的检测地址,在测试链接中进行测试,发现摄像头检测为正常,但是依然不显示任何摄像头画面(如下图所示)。
在这里插入图片描述
然而我已经确定自己打开了该网址的摄像头+麦克风权限,并且我在牛客的摄像头测试链接里测试都是正常的。

网上搜索了一下相关问题的解决方案:基本都是开权限、设置摄像头、降版本这种操作,试了一下,都不能解决我的问题。

本来准备就用我室友的电脑去答题了,但是总是心有不甘,感觉好像没开始笔试就已经输了一样,这不符合我的一贯风格。一看时间离笔试开始还有4小时,问题不大,试着解决一下吧!

系统环境

  • WIN10
  • Chrome 最新版 100.0.4896.127(正式版本)

检查步骤

常规检查步骤1:
确认谷歌浏览器中打开了对该网站的摄像头权限和麦克风权限。
该权限可在 谷歌浏览器 设置->隐私设置和安全性->网站设置 打开。
在这里插入图片描述为网站打开摄像头和麦克风权限

并且确认选择的摄像头为电脑的前置摄像头。
在这里插入图片描述

常规检查步骤2:
如果是WIN10系统,请打开 WIN10设置-隐私 菜单,确认已打开相机的访问权限,和桌面应用对摄像头的访问权限。(同理,对麦克风的访问权限执行相同操作)

打开相机访问权限:
在这里插入图片描述
打开桌面应用访问权限:
在这里插入图片描述

常规检查步骤3:
在谷歌浏览器中使用其他网站的测试地址,比如牛客平台的摄像头测试链接:摄像头调试_牛客,若有效,可排除摄像头权限问题。

常规检查步骤4:
检查平台网址是否是https://开头,新版本的Chrome出于安全考虑禁止了http://的摄像头(及媒体)调用。如果平台网址是http开头的话,改为https即可。

My Solution

如果你确认自己在Chrome打开了对应网址的摄像头+麦克风访问权限、摄像头选择为前置摄像头、且已经在WIN10的设置-隐私里开启了摄像头+麦克风的权限,并且在其他的测试网址成功打开了摄像头。那么恭喜你可能遇到了和我一样的情况。

之前我怀疑过是版本的问题,于是装了多个版本的Chrome去尝试。很多早期的解决方案是降版本到4X版本,我研究了一下他们遇到的问题是因为当时谷歌在新版本初次使用了getUserMedia这个方法,导致了一些兼容性问题,所以在当时可以通过降版本的方式来解决,但是到了现在我们的装的至少是9X开头的版本了,像我直接装的是 100.0.4896.127 版本,这种问题早就已经不存在了,所以降版本并不能解决这个问题。

进一步分析,既然牛客的网址能调用摄像头,为什么这个笔试平台就调不了呢(偏偏还显示摄像头正常,只是不能显示图像而已),我突然想到了自己在开腾讯视频会议的时候,曾经出现过打开摄像头但是也是黑屏的情况,那是因为我的电脑里有一个虚拟的摄像头设备:sharing camera,正好看到chrome的右上角显示了一个摄像机的图表,点开一看,果然,现在使用的摄像头是sharing camera!!!
在这里插入图片描述
那么问题来了,为什么我明明在设置里选择了使用前置摄像头,但是该网站还是会去调用sharing camera呢?
我本着探究的精神,在本页面又做了几次实验,发现每次我点击拍照的时候,都是我的摄像头灯先亮起,这时候点击浏览器右上方摄像头图表显示的的确是前置摄像头,但是一旦网页上开始显示摄像头拍摄图像时,就会变成sharing camera。
在这里插入图片描述
我推测这是该平台的代码写的有问题,即使在浏览器设置中已经指定了前置摄像头作为网页使用地摄像头,但是它仍然错误地试图从sharing camera处获得图像(憨憨代码)。

最终解决方案:
在WIN10-设备管理器中,找到图像设备,禁用sharing camera.

在这里插入图片描述
问题解决。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐