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

我们使用primefaces电子在“kiosk”types设置中运行一个应用程序,我们有4个摄像头设备连接到物理计算机,我们需要其中一个用于电子浏览器内部的webrtc,然后我们使用其他3个一些C代码来捕捉静帧。 我们知道USBpath或我们想要的设备的/ dev / video {#}。

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

在视图层,我们可以得到一个设备列表,看看它们是audio还是video,但是我们不能得到他们的/ dev / video#或者他们的USBpath来找出哪个是目标webrtc cam,所以这个还没有很好的帮助。

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

我不认为Chromium提供了一种检索媒体源的USBpath的方法。 您可能需要显示一个configuration屏幕,以允许用户第一次select正确的相机(类似于本演示 ),然后使用源/设备ID作为强制性约束。

另一个select是根据设备标签find正确的相机,但显然这只有在每个相机具有不同的标签时才起作用。 您可以通过在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) );