【报错】(webRTC):navigator.mediaDevices undefined

最近做了一个通过webRTC实现在线视频功能的网页,在自己的电脑上用localhost打开两个网页是没问题的,但是设置了一个简单的HTTP请求的NodeJS服务器之后,在局域网中用ip地址访问就不行了,浏览器会弹出 navigator.mediaDevices undefined 的错误。

网上搜了蛮多的,终于找到了原因:

通过 MediaDevices.getUserMedia() 获取用户多媒体权限时,需要注意其只工作于以下三种环境:

  • localhost 域
  • 开启了 HTTPS 的域
  • 使用 file:/// 协议打开的本地文件

如果当前文档未安全加载,navigator.mediaDevices 将为 undefined,并且不能使用getUserMedia()。

所以对应的解决方案也出来了:

1. 创建HTTPS服务器,用HTTPS协议的方式发送请求。

2. 在HTTP服务器上,可设置Chrome 的相应参数:

  • 在chrome浏览器的地址栏中输入: chrome://flags/#unsafely-treat-insecure-origin-as-secure,将该 flag 切换成 enable 状态;
  • 在输入框中填写需要开启的域名或地址,如果有多个,则以逗号分隔;
  • 重启浏览器后生效。

第二种方式只适合自己测试用,亲测可行~ 撒花~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章