解决http调用麦克风

首先说明这个需要用户手动操作,不是我们代码能搞定的

使用浏览器登录管理中心时的通话问题汇总与解决 - 简书

mac和Windows一样,大佬写的很详细了

我的项目中判断浏览器弹出对应调整方法

  var userAgent = navigator.userAgent;

          //判断是否chorme浏览器

            userAgent.indexOf("Chrome") > -1 ||

            userAgent.indexOf("Firefox") > -1 ||

            userAgent.indexOf("Trident") > -1

因为我们只支持三种浏览器,但是不是只能判断这三种

解决http调用麦克风_第1张图片

使用浏览器登录管理中心时的通话问题汇总与解决

1. 当服务器不是安装在本机时,使用浏览器通过内网IP地址去登录管理中心,收到门口机设备呼叫后点击接听会直接出现黑屏问题。

a. Google Chrome浏览器,如下图

解决http调用麦克风_第2张图片


因为服务器不在本机,又是通过ip为192.168.252.80:1744来访问,所以Chrome认为是不安全的(左上角,地址栏前显示)。在这种情况下点击接听或者监视想访问本机电脑的麦克风就会直接报错崩溃,例如出现如图左侧的黑屏,如果打开了浏览器调试工具可看到控制台打印了TypeError: Cannot read properties of undefined (reading 'getUserMedia')Uncaught TypeError: Cannot read properties of undefined (reading 'getUserMedia')两个报错。

解决方法:
  1. 在Chrome浏览器地址栏输入chrome://flags,然后按回车进入到配置页面;
  2. chrome://flags配置页面的搜索框输入Insecure origins treated as secure进行搜索,找到对应的配置项;
  3. Insecure origins treated as secure配置项的框里输入你访问服务器主机的IP地址和端口号,例如:192.168.252.80:1744,进行配置白名单;
  4. Insecure origins treated as secure配置项右侧选择设置为Enabled;
  5. 然后点击右下角Relaunch按钮重启浏览器;

重置之后再次访问,就不会显示不安全的警示了,而是显示感叹号圈圈,点击查看可以看到我们管理中心通话时需要访问的麦克风已授权。这样我们管理中心在Google Chrome浏览器上就可以正常的通话了。

解决http调用麦克风_第3张图片

b. 火狐浏览器,如下图

解决http调用麦克风_第4张图片


访问不是本机的IP地址192.168.252.80:1744的服务后,浏览器地址栏前侧会出现一个红杠锁,代表不安全地址。来电点击接听后,会出现黑屏,如果打开了浏览器调试工具可以看到控制台打印了TypeError: navigator.mediaDevices is undefinedUncaught TypeError: navigator.mediaDevices is undefined这两个错误。

解决方法:
  1. 在火狐浏览器地址栏输入:about:config然后回车,会显示底层首选项的警示页面,点击“接受风险并继续”,会跳入底层首选项设置页面;解决http调用麦克风_第5张图片
  2. 在底层首选项设置页面的搜索框输入insecure,然后回车搜索相关设置选项;
  3. 找到media.devices.insecure.enabledmedia.getusermedia.insecure.enabled都设置成true;解决http调用麦克风_第6张图片

  4. 刷新管理中心重新登录,监视或者接听呼叫时接受浏览器访问摄像头或者麦克风就可以正常监视通话了。

c. Safari浏览器,点击监视会直接不显示视频和报错(已打开开发者JavaScript控制台)

解决http调用麦克风_第7张图片

如图,监视区域直接黑屏不显示任何东西,只是还可以开锁和取消,右边控制台打印出Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'navigator.mediaDevices.getUserMedia')报错信息。

解决方法:
  1. 打开Safari浏览器,找到开发-->WebRTC勾选允许不安全站点进行媒体捕捉
  2. 回到管理中心访问页面,退出登录后,刷新浏览器,如果无法进入登录页面则修改地址http://192.168.252.80:1744/loginhttp://192.168.252.80:1744,去掉“/login”重新访问;
  3. 再进行监视或者接听通话,点击允许访问摄像头或者麦克风就可以正常显示视频画面和通话了。

    解决http调用麦克风_第8张图片

d. Microsoft Edge浏览器

解决http调用麦克风_第9张图片


服务器不在本机安装,其地址是192.168.252.80:1744,Edge浏览器地址栏左侧会出现不安全的警示标识。进行监视设备时,视频区域不显示画面,再打开调试工具控制台时会输出Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getUserMedia')报错信息。

解决方法:

  1. 在Edge浏览器地址栏输入edge://flags,然后按回车进入到配置页面;
  2. edge://flags配置页面的搜索框输入Insecure origins treated as secure进行搜索,找到对应的配置项;
  3. Insecure origins treated as secure配置项的框里输入你访问服务器主机的IP地址和端口号,例如:192.168.252.80:1744,进行配置白名单;
  4. Insecure origins treated as secure配置项右侧选择设置为已启用;
  5. 然后点击右下角重启按钮重启浏览器;
  6. 再进行监视或者接听通话,点击允许访问摄像头或者麦克风就可以正常显示视频画面和通话了。解决http调用麦克风_第10张图片

e. Oprea浏览器

解决http调用麦克风_第11张图片


服务器不在本机安装,其地址是192.168.252.80:1744,Oprea浏览器地址栏左侧会出现不安全的警示标识。进行监视设备时,视频区域不显示画面,再打开调试工具控制台时会输出Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'getUserMedia')报错信息。

解决方法:
  1. 在Chrome浏览器地址栏输入flags,然后按回车进入到Experiments页面;
  2. 在Experiments页面的搜索框输入Insecure origins进行搜索,找到对应的配置项;
  3. Insecure origins treated as secure配置项的框里输入你访问服务器主机的IP地址和端口号,例如:192.168.252.80:1744,进行配置白名单;
  4. Insecure origins treated as secure配置项右侧选择设置为Enabled;
  5. 然后点击右下角Relaunch按钮重启浏览器;
  6. 再进行监视或者接听通话,点击允许访问摄像头或者麦克风就可以正常显示视频画面和通话了。

解决http调用麦克风_第12张图片



作者:旋风猫
链接:https://www.jianshu.com/p/58a0d4421313
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(web,http,vue)