navigator.mediaDevices 未定义

Posted

技术标签:

【中文标题】navigator.mediaDevices 未定义【英文标题】:navigator.mediaDevices is undefined 【发布时间】:2021-12-10 10:22:46 【问题描述】:

因此,我制作了一个 WebRTC 屏幕共享应用程序,作为 Chrome 远程桌面和其他常见远程桌面/游戏流服务的自托管替代方案。

我的困境不是navigator.mediaDevices undefinded。每当我通过 file:/// 方案启动应用程序时,它都能完美运行; 与 Mozilla 文档中提到的 https:// 相同。但问题是我不想托管它,因为它存在一些主要的安全问题 (s)。那么我如何在192.168.XXX.XXXX 上托管它而不给出错误呢? (我想将它托管在我的本地网络上,以便在其他移动设备上进行测试。

【问题讨论】:

你是用移动设备实现的,并通过192.168.xxx.xxx的局域网连接到主机吗??我无法让它工作,因为我不知道如何在 safari 或其他移动浏览器中保护它 我最终因为其他原因放弃了这个项目,但我使用下面的答案重试了它,它运行良好。见:***.com/a/60964352/11849788 【参考方案1】:

具有 getUserMediagetDisplayMediaenumerateDevices 等功能的 API 需要 secure context,从 http: 访问这些功能的来源一直是 removed in Chrome back in 2019

对于开发,最简单的解决方案可能是创建自签名证书。

--更新--

对于开发来说,最简单的解决方案是从 localhost 运行,因为这被认为是安全的 - 请参阅 https://blog.mozilla.org/webrtc/camera-microphone-require-https-in-firefox-68/ 和 https://w3c.github.io/webappsec-secure-contexts/#localhost

评论来自:Vlad Dinulescu

【讨论】:

实际上,对于开发来说,最简单的解决方案是从 localhost 运行,因为这被认为是安全的 - 请参阅 blog.mozilla.org/webrtc/… 和 w3c.github.io/webappsec-secure-contexts/#localhost【参考方案2】:

在 Mozilla 开发人员中 去about:config 设置为真 media.devices.insecure.enabledmedia.getusermedia.insecure.enabled

【讨论】:

我接受的答案在技术上是正确的,但这对于快速原型设计非常有用。如果您无法像上面的答案那样在 localhost 上托管,我会推荐这个。 MilkyDeveloper - 你不能在其他设备上使用你的本地主机服务器 我在 Chrome 和 Brave 中尝试 about:config 时有点发疯,但该页面似乎只存在于 Firefox 中。

以上是关于navigator.mediaDevices 未定义的主要内容,如果未能解决你的问题,请参考以下文章

Chrome:navigator.mediaDevices.getUserMedia 不是函数

使用 navigator.mediaDevices.getDisplayMedia 的 JavaScript 屏幕录像不可搜索

navigator.mediaDevices 未定义

navigator.mediaDevices.getUserMedia 不起作用,webkitGetUserMedia 也不起作用

使用相机手电筒不允许更改面对模式 - Navigator.mediaDevices

如何在使用 navigator.mediaDevices.getUserMedia 录制音频时修复广泛的回声?