这几天在做浏览器拍照的功能,写的是调用前置摄像头,但是不知道为什么,调用的却是后置摄像头,我用的是华为平板,win10系统,chrome浏览器。
浏览器调用摄像头使用到了webrtc
if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){
navigator.mediaDevices.getUserMedia({
'audio':true,
'video':{facingMode:'user'}//facingMode:{exact:"environment"}调用后置摄像头
}).then(function(mediaStream){
getVideoStream(mediaStream)
}).catch(function(error){
console.log(error);
parent.layer.msg('检测到权限被禁用,请刷新页面重试',{
area:['20%','8%'],
offset:['46%','40%'],
});
})
}elseif(navigator.getUserMedia){
navigator.getUserMedia({
'video':true,
'audio':true
},getVideoStream)
}else{
parent.layer.msg('该浏览器暂不支持调用摄像头',{
area:['20%','8%'],
offset:['46%','40%'],
});
}
浏览器调用摄像头怎么做
但我在华为Android机上测试,用的也是chrome浏览器,但是调用的却是前置摄像头。
难道说Android和win10的前后置摄像头是相反的?
我将{facingMode:'user'}改成facingMode:{exact:"environment"}(标准上是调用的后置摄像头,在平板上实际上是前置)
chrome下弹出检测到权限被禁用的提示(这是我layer的效果),实际报错是OverconstrainedError,百度一下,全是说一些不要限制width、height之类什么的,但我也没设置这些玩意儿啊。。
而当我在Edge浏览器上测试的时候,却一切都是正常的,{facingMode:'user'}调用的还是前置,facingMode:{exact:"environment"}调用的是后置,和Android一样,这也排除了Android和win10的前后置摄像头是相反的这个结论!!!
总之,浏览器调用摄像头给大家简单的介绍了一些,希望大家多看看。