0

我需要根据正在运行 Web 应用程序的相机的存在来显示一个按钮。我有以下代码来检测相机的存在

const availableMediaOnDevice = await window.navigator.mediaDevices?.enumerateDevices();
console.log("devices ->", availableMediaOnDevice);
const deviceHasOwnCamera = availableMediaOnDevice.some(
  (device) => device.kind === "videoinput"
);

这恰好可以在我的台式计算机上的本地 IIS 上正常运行。如果我插入一个 USB 摄像头,我会得到一个videoinput,如果我拔掉它,那么enumerateDevices()再次操作时设备会被移除。

但是,当我将它部署到我们的测试环境并在运行时使用同一台台式计算机enumerateDevices()访问网站时,我总是会得到一个videoinput设备。当groupId我拔下相机时,它发生了变化,但是当我再次插入它时,它又被设置回了原始值。

同样不同的是,在本地我得到一个标签值“FaceCam 2020”,而在测试环境中,无论相机是否连接,我都会得到一个空标签。这让我认为这可能与权限有关,但我希望视频输入永远不会在测试中显示,而不是相反。

4

0 回答 0