有没有办法从命令行获取/设置Chromium浏览器中麦克风/摄像头的USB硬件ID。
我无法找到答案。要求是在运行期间设置特定的摄像机/麦克风,而无需在铬浏览器中的chrome:// settings / content中手动更新。
如果我能获得一些链接或一些示例代码,那将是很棒的。谢谢!!!
答案 0 :(得分:1)
您可以使用--use-fake-ui-for-media-stream
CLI标志来禁止在拥有媒体流时显示权限对话框。它默认允许。
在选择带有CLI标志的特定麦克风或相机方面,我认为不可能。但是,您可以访问并选择要在JavaScript中使用的设备。
navigator.mediaDevices.enumerateDevices
对象返回以下信息:
bd9759740e6c29df7703d0bfg62vbbc726fcb9422fdb948a35550835a840b328
每个会话都会生成Id
,所以我们不能硬编码,但标签不太可能改变。这意味着您可以遍历列表并获取与字符串匹配的设备ID。我使用async / await做了这个,但如果需要,你可以使用Promises或者转换为ES5:
(async() => {
const getFaceTimeCamId = async() => {
try {
const devices = await navigator.mediaDevices.enumerateDevices();
const faceTimeCam = devices.find(device =>
device.kind === 'videoinput' && device.label === 'FaceTime HD Camera');
return (faceTimeCam && faceTimeCam.deviceId) || undefined;
} catch(err) {
console.log(`${err.name}: ${err.message}`);
}
}
console.log(await getFaceTimeCamId());
})();
然后,您可以为流设置约束对象,以包含所需的deviceId
,例如,使用MediaDevices.getUserMedia
时。
const constraints = {
video: { deviceId: { exact: faceTimeCamId } }
};
我没有对此进行全面测试,因为我手头没有其他相机或麦克风,但希望这有一些帮助。我不知道你的确切用例,所以可能做了一些假设。