1

我正在开发一个流媒体网站。它可以工作,但是,有时,我安装了一个名为 OBS 的软件,它安装了一个虚拟相机。从那时起,当网站尝试使用摄像头时,它使用 OBS 虚拟摄像头,而不是我的物理摄像头。但这只发生在我的电脑上。当要使用相机时,会出现此权限对话框:

权限对话框

在我的笔记本电脑中,这是可行的,也就是说,在同一个对话框中,它显示了一个组合框,允许选择要使用的相机。

在网站上,我以这种方式启动相机:

navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {

});

我可以用 getUserMedia 函数做点什么吗?或者这个问题只与 PC 配置有关?

4

2 回答 2

4

这与谷歌浏览器有关。假设 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 的“官方”示例,但是,您需要使用stream.replaceTracks实时查看它。

于 2020-10-22T16:21:08.093 回答
0

正如@divinelemom 所建议的那样,在我看来,您的网络软件缺少用户用户界面来让您的用户选择相机或虚拟相机。这样做是个好主意。执行此操作的示例代码在这里。

https://webrtc.github.io/samples/src/content/devices/input-output/

同时,使用此 URL 查看 Chrome 选择默认摄像头的界面。

铬://设置/内容/相机

它给你一个这样的页面。从某种意义上说,您的选择是“粘性的”,您的 Web 应用程序将在您设置它后使用它。

在 Chrome 设置中选择默认相机

于 2020-10-24T13:15:27.787 回答