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

getUserMedia - Cannot access camera from two browsers at the same time

我一直在为我的下一个项目尝试使用 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);
        }

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

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

Chrome 和 Firefox 都有命令行标志,通过启用假设备使测试更容易。请参阅 here for Firefox 并进一步向下查看 Chrome。

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

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