首页 > 解决方案 > safari 13.1 navigator.mediaDevices.enumerateDevices() 仅返回音频设备

问题描述

我在桌面 Safari 13.1 版本上遇到问题。如果我在网络检查器中打开控制台(使用带有网络摄像头和麦克风的常规 macbook)并在任何类型的网站上执行此命令:

navigator.mediaDevices.enumerateDevices()

第一次它会在 Promise 结果中返回一个视频输入和一个音频输入。第二次它只会返回 2 个音频输入。视频输入消失。

不幸的是,我在检查解决方案上的可用设备时多次调用此方法。

知道为什么会发生这种情况吗?即使我不止一次调用它,我如何才能获得有关设备的准确信息? 在这里查看结果

标签: safariwebcamnavigatormediadevicesenumerate-devices

解决方案


我在运行 iOS 13 的 iPad 上也发现了同样的问题。

看来您需要先请求摄像头访问权限才能查看正确的设备列表。

navigator.mediaDevices.getUserMedia({ video: true })

这将提示您访问相机(您需要在 HTTPS 或 localhost 上)。

授予权限,然后再次运行,您应该会看到videoinput返回的 Promise 中列出的设备:

navigator.mediaDevices.enumerateDevices()

我想这作为一项隐私功能是有道理的,如果没有事先征得您的许可,网站就无法检查相机是否存在。


推荐阅读