【问题标题】:Google Chrome does not allow to choose the camera to use谷歌浏览器不允许选择要使用的相机
【发布时间】:2020-10-16 18:45:45
【问题描述】:

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

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

在网站上,我是这样启动相机的:

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

});

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

【问题讨论】:

    标签: google-chrome getusermedia navigator mediadevices


    【解决方案1】:

    这与谷歌浏览器有关。假设 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才能查看它是实时的。

    【讨论】:

      【解决方案2】:

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

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

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

      chrome://settings/content/camera

      它给你一个这样的页面。您的选择是“粘性的”,因为您的网络应用程序会在您设置它后使用它。

      【讨论】:

      • Chrome 设置显示选择的物理相机。但是,Web 应用程序使用虚拟应用程序。我会看这个例子,看看我是否可以这样解决。
      猜你喜欢
      • 1970-01-01
      • 2021-05-27
      • 2021-11-25
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多