我一直在使用webkitGetUserMedia方法(getUserMedia通过adapter.js)在我的网络应用上为webRTC获取相机nad microhpone。我的服务器不安全(没有SSL证书)。一切正常,直到我开始收到错误说:" getUserMedia()不再适用于不安全的起源。要使用此功能,您应该考虑将应用程序切换到安全的来源,例如HTTPS。有关详细信息,请参阅https://goo.gl/rStTGz。"
我用谷歌搜索,我看到现在在Chrome中我需要使用navigator.mediaDevices.getUserMedia()。我使用的是Chrome 47.0.2526.80 m,在此页https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia上,它表示此版本应支持此方法。但是,当我调用navigator.mediaDevices.getUserMedia时,我得到了未定义。所以现在我不能在Chrome中使用任何一种方法。
任何人都可以帮我解决这个问题。 感谢
答案 0 :(得分:30)
根据新的Chrome更新(来自谷歌浏览器47),Chrome浏览器不再支持http://(Unsecure Origin)的getUserMedia(),它将适用于https://(安全起源)
出于发展目的,
1.localhost被视为HTTP上的安全源,因此如果您能够从localhost运行服务器,则应该能够在该服务器上测试该功能。
2.您可以使用np.mean()
标志运行chrome(替换" example.com"使用您实际想要测试的来源),这会将该来源视为此会话的安全。请注意,您还需要包含--unsafely-treat-insecure-origin-as-secure="http://example.com"
以创建新的测试配置文件,以使该标志生效。
答案 1 :(得分:9)
最后一次google-chrome更新使getUserMedia仅在安全起源上起作用。 有一种方法可以使其工作,但仅用于开发目的。 只需使用带有选项的cmd运行chrome
- 不安全性治疗不安全-原点作为安全=" example.com"
以及使用新用户个人资料的此选项
- 用户 - 数据 - DIR = /测试/只/简档/ DIR
FYI getUserMedia到目前为止在firefox上工作,但在我看来,它会推荐一个像google-chrome这样的安全来源。
答案 2 :(得分:5)
只要您使用https ,您仍然可以在Chrome 47,中使用旧方法名称。名称更改与47的新安全源要求正交。请参阅其他答案。
关于丢失的方法:navigator.mediaDevices.getUserMedia
已放入Chrome back under a flag,因此您必须打开chrome://flags/#enable-experimental-web-platform-features
或使用最新版本的adapter.js,例如:{{3 }}
答案 3 :(得分:4)
使用本地服务器在手机上进行测试时,我一直在努力获取Android chrome上pwa的麦克风权限。 (在我的桌面上可以正常工作。)以上一些建议帮助我朝着正确的方向发展,但我想澄清一下。 ...手机上的Chrome浏览器不允许触发权限请求,因为原始地址不安全。我发现这篇文章对这个主题很有帮助: Enabling the Microphone/Camera in Chrome for (Local) Unsecure Origins,作者:斯科特·卡迈克尔(Scott Carmichael)。
他说,
通过地址栏导航至Chrome中的 chrome:// flags /#unsafely-treat-insecure-origin-as-secure 。
找到并启用不安全来源视为安全部分。
添加您要忽略其安全来源策略的所有地址。 (如果需要,请包括端口号。)
保存并重新启动Chrome。