我如何让用户随时允许或拒绝 camera/microphone 访问以及他们如何更改设备来源?

How can i let users allow or deny camera/microphone access anytime and how can they change device source?

我正在使用 webRTC 并使用 https,用户可以选择是允许还是拒绝摄像头和麦克风访问一次,然后保存他们的选择以供下次访问。 我想添加一些代码,让用户可以在他们想要的任何特定时间打开或关闭他们的网络摄像头或麦克风,以及让他们更换他们的摄像头或麦克风设备(如果他们在任何时候也有多个)

请帮我做..谢谢

您通过停止从 getUserMedia 收到的曲目来关闭摄像头和麦克风:

stream.getTracks().forEach(track => track.stop())

要重新打开它们,请再次调用 getUserMedia

您可以使用 enumerateDevices 构建内容内摄像头 and/or 麦克风选择器,其中 returns 列表,除其他外,您可以使用 deviceIds使用 deviceId 约束选择具有 getUserMedia 的特定设备(在 Chrome 中使用 https fiddle):

var log = msg => div.innerHTML += msg + "<br>";

navigator.mediaDevices.enumerateDevices()
  .then(devices => {
    var cams = devices.filter(device => device.kind == "videoinput");
    log("You have " + cams.length + " camera(s).");
    if (cams.length) {
      return navigator.mediaDevices.getUserMedia({
        video: { deviceId: { exact: cams[0].deviceId } },
      })
      .then(stream => (video.srcObject = stream));
    }
  })
  .catch(log);
<div id="div"></div><br>
<video id="video" height="120" width="160" autoplay></video>

请注意,adapter.js 需要与 Chrome 52(固定为 54)一起使用。

请参阅 official device selector sample 以获得完整的演示。