getUserMedia - 无法同时从两个浏览器访问相机

Vee*_*eeK 0 javascript hardware webrtc

我一直在为我的下一个项目尝试使用 webRTC 来创建视频聊天,但测试很困难。我有这个简单的代码来访问相机:

        navigator.getUserMedia = navigator.getUserMedia ||
                                 navigator.webkitGetUserMedia ||
                                 navigator.mozGetUserMedia ||
                                 navigator.msGetUserMedia;

        var video = document.querySelector('#av-chat video');

        if (navigator.getUserMedia) {
          navigator.getUserMedia({audio: true, video: true}, function(stream) {
            video.src = window.URL.createObjectURL(stream);
          }, errorCallback);
        }
Run Code Online (Sandbox Code Playgroud)

它在 chrome 和 mozilla 上运行良好,但是当我尝试一起做时,它不起作用。我的意思是在一起就像在两个浏览器中用这段代码打开同一个文件。似乎当一个浏览器可以访问相机时,它会阻止其他任何人使用它。

我没有看到互联网上讨论过这个问题,所以我想知道,只有我吗?如果没有,有什么解决办法吗?

Ada*_*man 5

这是 Windows 上的限制。在 Mac OS 上,您可以同时在多个应用程序中使用同一个相机,但遗憾的是不能在 Windows 中使用。您在这里有几个选择:

  1. 买一台 Mac
  2. 在测试时获取第二个 USB 摄像头以在您的第二个应用程序中使用。
  3. 安装一些用于拆分相机创建虚拟相机的软件
  4. 在 Chrome 或 Firefox(或两者)中使用假设备进行测试(如 Philipp 建议的那样)。在 Firefox 中打开假设备实际上很容易,而且它是免费的,所以如果你还没有另一个 USB 摄像头,这可能是最好的选择。
    1. 只需转到about:config您的网址栏中
    2. 接受警告信息
    3. 添加一个新的布尔值。您可以通过右键单击并选择 New->Boolean 来完成此操作。
    4. 然后输入 media.navigator.streams.fake
    5. 选择 true 作为值。 在此处输入图片说明 现在,当您使用相机时,您会得到虚假的视频和音频。