我正在开发一个流媒体网站。然而,有时我安装了一个名为OBS的软件,它安装了一个虚拟摄像头。从那时起,当网站尝试使用相机时,它使用的是OBS虚拟相机,而不是我的物理相机。但这种情况只发生在我的电脑上。当使用摄像机时,此权限对话框出现:
在我的笔记本电脑上,这是可行的,也就是说,在同一个对话框中,它显示了一个组合框,允许选择要使用的摄像头。
在网站上,我这样启动摄像头:
navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
});
我是否可以使用getUserMedia功能执行某些操作,或者此问题仅与PC配置有关?
发布于 2020-10-23 00:21:08
这与Google Chrome有关。假设OBS的deviceID保持不变,然后使用navigator.mediaDevices.enumerateDevices()
获取所有可用设备的列表。
(MDN的示例非常方便):
navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
devices.forEach(function(device) {
console.log(device.kind + ": " + device.label +
" id = " + device.deviceId);
});
})
.catch(function(err) {
console.log(err.name + ": " + err.message);
});
然而,如果你想要能够切换摄像头中流,那么我建议使用WebRTC的“官方”example,然而,你将需要使用stream.replaceTracks
来实时查看它。
发布于 2020-10-24 21:15:28
在我看来,你的网络软件缺乏一个用户界面,让你的用户选择相机或虚拟相机,就像@divinelemom建议的那样。这样做是个好主意。下面是执行此操作的示例代码。
https://webrtc.github.io/samples/src/content/devices/input-output/
同时,使用此URL查看Chrome用于选择默认摄像头的界面。
chrome://设置/内容/摄像头
它会给你一个这样的页面。你的选择是“粘性”的,因为在你设置之后,它将被你的web应用使用。
https://stackoverflow.com/questions/64394782
复制相似问题