Javascript iOS13 getUserMedia无法在chrome和edge上运行
我和我的朋友正在开发一个需要摄像头访问的应用程序,我们在让摄像头与iOS一起工作时遇到了一些问题(我们使用的是iOS13): Safari在获得相机内容后立即冻结,chrome和edge根本无法访问相机。我们的守则如下:Javascript iOS13 getUserMedia无法在chrome和edge上运行,javascript,ios,google-chrome,camera,getusermedia,Javascript,Ios,Google Chrome,Camera,Getusermedia,我和我的朋友正在开发一个需要摄像头访问的应用程序,我们在让摄像头与iOS一起工作时遇到了一些问题(我们使用的是iOS13): Safari在获得相机内容后立即冻结,chrome和edge根本无法访问相机。我们的守则如下: let windowWidth=window.innerWidth; let windowHeight=window.innerHeight; function isMobile() { const isAndroid = /Android/i.test(naviga
let windowWidth=window.innerWidth;
let windowHeight=window.innerHeight;
function isMobile() {
const isAndroid = /Android/i.test(navigator.userAgent);
const isiOS = /iPhone|iPad|iPod/i.test(navigator.userAgent);
return isAndroid || isiOS;
}
async function setupCamera() {
video = document.getElementById('video');
console.log("a")
video.setAttribute('autoplay', '');
video.setAttribute('muted', '');
video.setAttribute('playsinline', '');
const stream = await navigator.mediaDevices.getUserMedia({
'audio': false,
'video': {
facingMode: 'user',
width: mobile ? undefined : windowWidth,
height: mobile ? undefined : windowHeight
},
});
console.log("b")
video.srcObject = stream;
return new Promise((resolve) => {
video.onloadedmetadata = () => {
resolve(video);
};
});
}
根据控制台,“a”总是被打印出来,但从来没有“b”。任何关于错误的线索都将不胜感激 更新-2020年11月19日 WKWebView可以在iOS 14.3 beta 1中使用getUserMedia
函数isMobile(){
const isAndroid=/Android/i.test(navigator.userAgent);
const-isiOS=/iPhone | iPad | iPod/i.test(navigator.userAgent);
返回isAndroid | | isiOS;
}
异步函数setupCamera(){
const isPortrait=true;//此处执行逻辑
让video=document.getElementById('video');
console.log(“获取视频”);
video.setAttribute('autoplay','';
video.setAttribute('静音','');
video.setAttribute('playsinline','';
log(“调用getUserMedia”);
返回新承诺((解决)=>{
(异步()=>{
等待navigator.mediaDevices.getUserMedia({
“音频”:错误,
“视频”:{
facingMode:'用户',
宽度:isPortrait?480:640,
身高:isPortrait?640:480,
},
})
。然后((流)=>{
log(“getUserMedia stream”);
video.srcObject=流;
video.play();
决心(正确);
})
.catch((错误)=>{
log(“遇到getUserMedia错误”,err);
决议(假);
});
})();
});
}
(异步()=>{
const ret=等待设置摄影机();
log(`initialized camera:${ret}`)
})();代码>
html,
身体{
身高:100%;
保证金:0;
}
div{
位置:相对位置;
最小高度:100%;
最小宽度:100%;
溢出:隐藏;
对象匹配:覆盖;
}
录像带{
宽度:480px;
高度:640px;
背景色:黑色;
}