Google chrome DOMException:系统拒绝了navigator.mediaDevices.getUserMedia的权限

时间:2019-11-22 19:26:47

标签: javascript google-chrome webrtc webcam getusermedia

现在是2019年11月,此JavaScript代码可在 FireFox(70.0.1(64位)), Safari(13.0.2(15608.2.30.1.1)), Opera(版本:65.0.3467.48), 在Windows Chrome版本70.0.3538.77(64位)上,此代码有效。 但不适用于MacOS Google Chrome(版本78.0.3904.108(正式版本)(64位)):

navigator
.mediaDevices
.getUserMedia({video: true, audio: true})
.then(stream => {
    console.log("success!")
})
.catch(e => {
    console.log("e: ", e);
});

在Chrome的控制台中,我得到: DOMException:权限被拒绝 经过大量谷歌搜索,我还没有发现任何最新信息。我们到底如何使用JS请求Chrome中的摄像头访问权限?

4 个答案:

答案 0 :(得分:2)

自MacOS Mojave起,相机和麦克风require OS permissions

这适用于所有非Apple产品,包括Safari以外的所有浏览器。

检查系统偏好设置>安全和隐私>隐私>相机和麦克风。确保列出了Chrome,并且有一个复选框。

Chrome首次尝试访问它们时,您应该已经收到有关此操作的特殊操作系统提示。但是,如果它不小心被某种方式阻止了,就不会再提示您。

答案 1 :(得分:1)

就我而言,即使所涉及的站点未出现在麦克风设置页面上被阻止的站点下,该错误仍在我身上发生。

我必须去站点设置->查看所有站点中存储的权限和数据->查找我的站点->单击重置权限来解决此问题。

答案 2 :(得分:1)

就我而言,我没有意识到我所从事的项目正在添加安全标头,从而阻止使用麦克风的可能性:

Feature-Policy "microphone 'none'; geolocation 'none'"

答案 3 :(得分:0)

我在稍微不同的情况下遇到了同样的错误(在 Windows 10、Chrome 上): 我正在运行本地服务器并从以下位置访问我自己的网站 http://127.0.0.1:5500/。 解决方案是从 http://localhost:5500/ 相反。