【问题标题】:Electron disable specific camera device access or set default webcamElectron 禁用特定摄像头设备访问或设置默认网络摄像头
【发布时间】:2016-07-22 17:59:53
【问题描述】:

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

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

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

任何帮助都很棒,我不得不发布一个问题让我感到很奇怪,因为在过去的 12 年中,我一直能够通过搜索找到我需要的东西,但它已经大约 3 个小时了,所以是时候寻求帮助了。

【问题讨论】:

    标签: node.js camera device electron


    【解决方案1】:

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

    另一种选择是根据设备标签找到正确的相机,但显然这只有在每个相机都有不同的标签时才有效。您可以通过在 DevTools 控制台中运行此 sn-p 来获取所有设备标签和 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)
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 2020-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多