如何将Android设备摄像头设为JavaScript视频源?AR应用适配求助
解决Android浏览器中AR.js摄像头NotFoundError问题
我之前在做AR.js项目时也碰到过这个Android浏览器的摄像头NotFoundError,折腾了好一阵才解决,结合你的代码情况,给你几个针对性的方案:
先搞定摄像头权限问题
Android上的浏览器对媒体权限管控很严,必须确保用户主动授权了摄像头访问。你可以在初始化AR源前先做权限检查,避免直接报错:// 先请求摄像头权限,通过后再初始化AR navigator.mediaDevices.getUserMedia({ video: true }) .then(() => { initARSource(); }) .catch(err => { console.error("摄像头权限异常:", err); alert("请先允许摄像头权限才能使用AR功能哦"); }); function initARSource() { var arToolkitSource = new THREEx.ArToolkitSource({ sourceType : 'webcam', }); // 这里继续你的AR初始化逻辑... }另外,有些浏览器第一次会默认拒绝权限,最好在页面上加个明显的提示,引导用户去设置里开启权限。
必须用HTTPS部署(localhost除外)
现在主流Android浏览器(比如Chrome、Edge)都要求媒体设备访问必须在HTTPS环境下,HTTP环境会直接禁止摄像头调用。如果你是在服务器上部署应用,一定要配置HTTPS;本地开发用localhost是没问题的。排查浏览器兼容性
不同Android浏览器对WebRTC的支持不一样,AR.js依赖WebRTC获取摄像头流。尽量用Chrome、Firefox这些主流浏览器测试,别用系统自带的旧版浏览器。可以加个简单的兼容性检测:if (!navigator.mediaDevices?.getUserMedia) { alert("你的浏览器不支持摄像头访问,请升级到最新版本的主流浏览器"); return; }指定摄像头设备(可选)
有些Android设备有前后两个摄像头,默认选择可能出错。AR应用一般需要后置摄像头,你可以在配置里明确指定:var arToolkitSource = new THREEx.ArToolkitSource({ sourceType : 'webcam', facingMode: 'environment', // 指定用后置摄像头,'user'是前置 sourceWidth: 640, sourceHeight: 480 });注意
facingMode在部分旧浏览器上可能不支持,需要做降级处理。排查硬件或占用问题
极少数情况是设备摄像头硬件故障,或者被其他应用占用了。可以建议用户关闭其他用摄像头的APP,重启设备后再试试。
内容的提问来源于stack exchange,提问作者Kanerva Peter
相关产品推荐
相关产品推荐

