WebRTC应用部署公网后getUserMedia无法调用音视频设备问题咨询
公网访问WebRTC项目无法调用音视频设备的解决方案
问题根因
浏览器对getUserMedia接口有强制安全策略限制,仅允许在安全上下文环境中调用该接口:
- 本地运行时,
localhost、127.0.0.1默认被判定为安全上下文,所以可以正常调取摄像头、麦克风 - 公网访问时,只有使用HTTPS协议的站点才会被判定为安全上下文,普通HTTP公网站点会被直接禁止调用音视频接口
你可以在公网访问页面时打开浏览器开发者控制台,执行window.isSecureContext,如果返回false即可确认是该规则导致的异常。
可用解决方法
- 【正式环境首选】给公网服务器配置SSL证书,启用HTTPS访问。配置完成后通过HTTPS协议的公网URL访问应用,即可正常调用
getUserMedia获取本地音视频流,目前有免费的SSL证书可直接使用,无需额外成本。 - 【临时调试使用】如果仅用于个人本地测试,可以手动修改浏览器安全规则放行指定HTTP站点:
- Chrome/Edge浏览器在地址栏输入
chrome://flags/#unsafely-treat-insecure-origin-as-secure打开配置页 - 将配置项设置为
Enabled,在下方输入框填入你的公网HTTP服务地址 - 重启浏览器后访问该地址即可正常调取音视频设备,该配置仅对当前浏览器生效,无法用于面向普通用户的正式场景。
- Chrome/Edge浏览器在地址栏输入
- 额外注意:即使站点符合安全上下文要求,也需要用户在页面弹出音视频权限申请提示时选择允许,才能正常获取设备流。
内容的提问来源于stack exchange,提问作者isuru wickramasuriya
相关产品推荐
相关产品推荐

