safari - safari 13.1 navigator.mediaDevices.enumerateDevices() 仅返回音频设备
问题描述
我在桌面 Safari 13.1 版本上遇到问题。如果我在网络检查器中打开控制台(使用带有网络摄像头和麦克风的常规 macbook)并在任何类型的网站上执行此命令:
navigator.mediaDevices.enumerateDevices()
第一次它会在 Promise 结果中返回一个视频输入和一个音频输入。第二次它只会返回 2 个音频输入。视频输入消失。
不幸的是,我在检查解决方案上的可用设备时多次调用此方法。
知道为什么会发生这种情况吗?即使我不止一次调用它,我如何才能获得有关设备的准确信息? 在这里查看结果
解决方案
我在运行 iOS 13 的 iPad 上也发现了同样的问题。
看来您需要先请求摄像头访问权限才能查看正确的设备列表。
navigator.mediaDevices.getUserMedia({ video: true })
这将提示您访问相机(您需要在 HTTPS 或 localhost 上)。
授予权限,然后再次运行,您应该会看到videoinput
返回的 Promise 中列出的设备:
navigator.mediaDevices.enumerateDevices()
我想这作为一项隐私功能是有道理的,如果没有事先征得您的许可,网站就无法检查相机是否存在。
推荐阅读
- django - 我的模型中的 AutoField 和 oracle 数据库中的序列有问题
- excel - VBA 的动态行链接
- reactjs - 让 React 表单使用 Formik 发送电子邮件
- css - Bootstrap Sizing 小于 25%
- javascript - 如何从 vue js 中的另一个组件获取布尔数据?
- c# - 嵌套的一对多表 SQLite-Net Extensions
- sql - SQL 三表连接使用两个 id 和另一列
- python - 在熊猫中导入嵌套字典数据
- flutter - 颤振错误:没有名为“keyboardDismissBehavior”的命名参数
- flutter - 当我通过单击脚手架内的平面按钮导航到其他页面时,底部导航栏消失