电子禁用特定的相机设备访问或设置默认网络摄像头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电子禁用特定的相机设备访问或设置默认网络摄像头相关的知识,希望对你有一定的参考价值。

我们使用原子电子在“kiosk”类型设置中运行应用程序,我们有4个网络摄像头设备连接到物理计算机,我们特别需要其中1个用于电子浏览器内部的webrtc,然后我们使用其他3个一些C代码捕获静止帧。我们知道我们想要的设备的USB路径或/ dev / video {#}。

有没有办法在启动电子窗口之前禁止视图层访问节点中的3个网络摄像头?或者另一种选择是在我们启动视图图层之前设置默认摄像头,以便它默认为我们想要的网络摄像头。

在视图层,我们可以得到一个设备列表,看看它们是音频还是视频,但是我们无法获得他们的/ dev / video#或他们的USB路径来确定哪个是目标webrtc cam,所以这个还不是很有帮助。

任何帮助都很棒,我觉得发布一个问题很奇怪,因为在过去的12年里,我已经能够通过搜索找到我需要的东西了,但它已经花了大约3个小时的时间来寻求帮助。

答案

我不认为Chromium提供了一种检索媒体源USB路径的方法。您可能需要显示配置屏幕以允许用户第一次选择正确的摄像头(类似于此demo),然后使用源/设备ID作为此时的强制约束。

另一种选择是根据设备标签找到正确的相机,但显然只有每个相机都有不同的标签才能使用。您可以通过在DevTools控制台中运行此代码段来获取所有设备标签和ID:

navigator.mediaDevices.enumerateDevices()
.then(devices => devices.forEach(
  device => console.log(`kind: ${device.kind}: ${device.label} id=${device.deviceId}`)
))
.catch(err => console.log(err));

无论哪种方式,一旦您拥有源/设备ID,您就可以将其指定为强制约束,以确保仅使用一个特定的摄像头:

navigator.webkitGetUserMedia(
  {
    audio: false,
    video: {
      mandatory: {
        chromeMediaSourceId: 'the camera source id obtained earlier',
      }
    }
  },
  stream => console.dir(stream),
  error => console.log(error)
);

以上是关于电子禁用特定的相机设备访问或设置默认网络摄像头的主要内容,如果未能解决你的问题,请参考以下文章

从浏览器访问相机

哪个相机会在移动设备中打开 getUserMedia API?前还是后?

从网页上的其他设备访问相机

人脸识别相机打不开

Android 设备管理员 - 禁用未在(多用户)访客帐户中应用的相机

Chrome不允许HTTP托管网站访问相机和麦克风