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

Mic*_*l P 19 javascript ssl google-chrome html5-video webrtc

我一直在使用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中使用任何一种方法.

任何人都可以帮我解决这个问题.谢谢

Moh*_*eer 38

根据新的Chrome更新(来自Google Chrome 47),Chrome浏览器不再支持getUserMedia(),而不是http://(Unsecure Origin),它将适用于https://(Secure Origin)

为了发展目的,

1.localhost被视为HTTP上的安全源,因此如果您能够从localhost运行服务器,则应该能够在该服务器上测试该功能.

2.您可以使用--unsafely-treat-insecure-origin-as-secure="http://example.com"标志运行chrome (将"example.com"替换为您实际要测试的原点),这会将该来源视为此会话的安全.请注意,您还需要包含--user-data-dir=/test/only/profile/dir为标志创建新的测试配置文件.

参考:https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins

  • 这实际上不是我的问题.我已经看到并阅读了所有这些信息.我的问题是,正如我所看到的,navigator.getUserMedia已被弃用.但同时navigator.MediaDevices.getUserMedia未定义!那么当后继者不存在时,一种方法如何被弃用?第二个问题是如果navigator.getUserMedia不能用于非安全的起源,会是什么?只有"--unsafely-treat-insecure-origin-as-secure ="example.com"的方式?naviagtor.MediaDevices.getUserMedia上不清楚这种新方法是否适用于非安全起源! (5认同)
  • 它不适用于Chrome 48.0.2564.116 Chrome说:您使用的是不受支持的命令行标志:--unsafely-treat-insecure-origin-as-secure (4认同)

Kas*_*av' 9

最后一次google-chrome更新使getUserMedia仅在安全起源上起作用.有一种方法可以使其工作,但仅用于开发目的.只需使用带有thoses选项的cmd运行chrome

--unsafely性治疗不安全的原产地,如安全="example.com"

和此选项使用新的用户配置文件

的user-data-DIR = /测试/只/简档/ DIR

FYI getUserMedia到目前为止在firefox上工作,但在我看来,它会推荐一个像google-chrome这样的安全来源.


C-N*_*187 7

在使用本地服务器在手机上进行测试时,我很难在 android chrome 上为我的 pwa 获取麦克风权限。(在我的桌面上运行良好。)上面的一些建议帮助我朝着正确的方向前进,但我想澄清一下。...我手机上的 Chrome 不允许触发权限请求,因为原始地址不安全。我发现这篇关于这个主题的文章非常有帮助: Enabling the Microphone/Camera in Chrome for (Local) Unsecure Origins Scott Carmichael。

他说,

  1. Chrome 中通过地址栏导航到chrome://flags/#unsafely-treat-insecure-origin-as-secure

  2. 查找并启用视为安全不安全来源部分。

  3. 添加要忽略其安全源策略的任何地址。(如果需要,包括端口号。)

  4. 保存并重新启动 Chrome。


jib*_*jib 5

只要您使用https,您仍然可以在Chrome 47中使用旧方法名称.名称更改与47的新安全源要求正交.看到其他答案.

对失踪方法:navigator.mediaDevices.getUserMedia放入一个旗帜下背在Chrome中,所以您必须打开chrome://flags/#enable-experimental-web-platform-features或使用最近adapter.js的版本,喜欢这里:/sf/answers/2396168841/.