最近在做web的语音输入功能,在获取用户设备权限时遇到一些问题,记录总结一下!
问题1:本地开发时navigator.mediaDevices可以获取到,但是发布到测试环境navigator.mediaDevices()是undefined;
原因:通过 navigator.mediaDevices.getUserMedia() 获取用户多媒体权限时,需要注意其只工作于以下三种环境:
- localhost 域开启了
- HTTPS 的域 使用
- file:/// 协议打开的本地文件
我们公司的测试环境是http域的所以获取不到,如果想在http域使用需要修改chrome配置:
chrome://flags/#unsafely-treat-insecure-origin-as-secure,将该 flag 切换成 enable 状态;在输入框中填写需要开启的域名或地址,如果有多个,则以逗号分隔;重启浏览器后生效。
问题2:iframe页面navigator.mediaDevices.getUserMedia(),提示:Media access NotAllowedError: Permission denied;
原因:在react中的iframe页中调用摄像头和麦克风需要配置权限;
解决: let iframe = windoe.document.getElementById("mainIframe") iframe.allow="microphone;camera;midi;encrypted-media;"
遇到的2个小问题,希望可以帮助到和我遇到一样问题的小伙伴!