我在桌面Safari 13.1版本上遇到问题。如果我在Web检查器(带有带摄像头和麦克风的常规Macbook)中打开控制台,并在任何类型的网站上执行此命令:
navigator.mediaDevices.enumerateDevices()
第一次它将以视频输入和音频输入返回Promise结果。第二次它将仅返回2个音频输入。视频输入消失。
不幸的是,我在检查解决方案上的可用设备时多次调用此方法。
任何想法为什么会发生,即使我多次调用它,也如何获得有关设备的准确信息?See the results here
我在运行iOS 13的iPad上也发现了相同的问题。
似乎您需要先请求访问摄像机才能看到正确的设备列表。
navigator.mediaDevices.getUserMedia({ video: true })
这将提示您访问摄像机(您必须使用HTTPS或本地主机)。
授予许可,然后再次运行它,您应该看到返回的诺言中列出的videoinput
设备:
navigator.mediaDevices.enumerateDevices()
我想这是一项隐私保护功能,如果没有先征得您的许可,网站就无法检查相机是否存在。