【问题标题】:JavaScript programatically check if camera is being usedJavaScript 以编程方式检查是否正在使用相机
【发布时间】:2020-11-06 18:45:21
【问题描述】:

我正在为视频聊天应用编写功能测试。

我想确保当用户离开会议时,摄像头会关闭。所以,我正在尝试检查相机是否正在使用。

有没有办法以编程方式做到这一点?我在 navigator.MediaDevices 上找不到任何说“嘿,你的相机正在被使用”的方法。

【问题讨论】:

  • 测试相机是否被其他应用/网站使用?

标签: javascript browser camera mediadevices


【解决方案1】:

这是我在 TestCafe 中通过“监视”getUserMedia 解决它的方法:

const overWriteGetUserMedia = ClientFunction(() => {
  const realGetUserMedia = navigator.mediaDevices.getUserMedia;
  const allRequestedTracks = [];
  navigator.mediaDevices.getUserMedia = constraints =>
    realGetUserMedia(constraints).then(stream => {
      stream.getTracks().forEach(track => {
        allRequestedTracks.push(track);
      });
      return stream;
    });
  return allRequestedTracks;
});

test('leaving a meeting should end streams', async t => {
  const allRequestedTracks = await overWriteGetUserMedia();

  await t.wait(5000); // wait for streams to start;

  await t.click(screen.getByLabelText(/leave/i));
  await t.click(screen.getByLabelText(/yes, leave the meeting/i));

  await t.wait(1000); // wait for navigation;

  const actual = !allRequestedTracks.some(track => !track.ended);
  const expected = true;

  await t.expect(actual).eql(expected);
});

【讨论】:

    【解决方案2】:

    您可以使用navigator.mediaDevices.getUserMedia方法获取用户摄像头的访问权限,用户active值检查摄像头是否已经激活。

    如果用户阻止了相机的权限,您将收到错误消息。

    希望这对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 2016-12-21
      • 1970-01-01
      • 2013-11-20
      • 2012-03-17
      • 2017-09-14
      • 2011-06-23
      相关资源
      最近更新 更多