Chrome 当您的网络摄像头打开/关闭时,哪个浏览器事件会检测到?

pnwntuvh  于 2023-05-20  发布在  Go
关注(0)|答案(1)|浏览(202)

我目前正在开发一个原型,它可以记录来自第三方服务的视频聊天信息,如Hangouts,Zoom等。
到目前为止,我还不能用navigator.mediaDevices.ondevicechange获取一个简单的事件来记录到控制台。使用最新版本的Chrome。
https://codepen.io/anon/pen/dqbNKR
我正在使用这支笔,我想做的就是在摄像机打开/关闭时登录到控制台。ondevicechange是正确的事件吗?
https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/ondevicechange
无论何时将摄像头、麦克风或扬声器等媒体设备连接到系统或从系统中移除,都会向MediaDevices示例发送devicechange事件。它是一个没有添加属性的通用事件。
我知道我也可以查看特定元素的流,但由于它是第三方服务,我不一定知道要查看哪些元素。
那么,如何在浏览器的第三方应用程序中检测网络摄像头何时打开/关闭?
当我输入这个我遇到了这个,但需要测试它。
How to check with JavaScript that webcam is being used in Chrome

n9vozmp4

n9vozmp41#

一种似乎在Chrome 113.0.5672.93和FF 113.0.1上工作的方法是侦听视频轨道上的ended事件:

navigator
  .mediaDevices
  .getUserMedia({video: {facingMode: "user"}})
  .then(stream => {
    stream.getVideoTracks().forEach(track => {
      track.addEventListener("ended", () => {
        console.log("disabled by user");
      });
    });
    const video = document.createElement("video");
    video.srcObject = stream;
    video.setAttribute("playsinline", true);
    video.play();
  })
  .catch(err => {
    // permission denied
    console.error(err);
  });

相关问题