2016-07-22 79 views
2

我们使用原子电子在“信息亭”类型设置中运行应用程序,我们有4个摄像头设备连接到物理计算机,我们特别要使用其中一个对于电子浏览器内部的webrtc,则其他3我们使用一些C代码来捕获静止帧。我们知道USB路径或我们想要的设备的/ dev/video {#}。电子禁用特定的摄像头设备访问或设置默认的摄像头

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

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

任何帮助都很好,我觉得很奇怪,因为在过去的12年中,我已经能够通过搜索找到我需要的东西,但是它已经有3个小时的时间来寻求帮助。

回答

2

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

另一种方法是根据设备标签找到正确的相机,但显然这只适用于每个相机都有明显标签的情况。您可以通过在DevTools控制台中运行这个片段让所有的设备标签和标识:

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) 
);