iOS17以下微信浏览器调用navigator.mediaDevices.getUserMedia授权之后调取不了摄像头,Safari浏览器可以,Android微信浏览器也可以
部分代码如下
<video ref="video" id="video" objectFit="cover" class="video-image" :controls="false"
:show-center-play-btn="false" :autoplay="true" :loop="true" playsinline :webkit-playsinline="true"></video>
<canvas ref="canvas" :style="canvasStyle" canvas-id="myCanvas" id="myCanvas"></canvas>
init(options) {
let error = ''
try {
this.video = document.querySelector('#video').children[0].children[0]
// console.log("this.vide",this.video);
// 前置摄像头
if ('mediaDevices' in window.navigator && 'getUserMedia' in window.navigator.mediaDevices) {
// 浏览器支持
window.navigator.mediaDevices.getUserMedia({
'video': true
}).then((stream)=> {
this.video.srcObject = stream
// this.myVideo.play()
this.initTracker(options)
// console.log('getUserMedia completed successfully.');
})
.catch((error)=> {
console.log(error.name + ": " + error.message);
this.ArtificialTracker(error.message)
});
} else {
error = '手机不支持自动获取人脸'
this.ArtificialTracker(error)
}
} catch (err) {
this.ArtificialTracker(err.message)
}
},
你好,麻烦提供下机型,微信版本号和复现链接
你好,你是怎么调起前置摄像头的。
// 前置摄像头
if ('mediaDevices' in window.navigator && 'getUserMedia' in window.navigator.mediaDevices) {
// 浏览器支持
window.navigator.mediaDevices.getUserMedia({
'video': true
}).then((stream) => {
this.video.srcObject = stream
// this.myVideo.play()
this.initTracker(options)
// console.log('getUserMedia completed successfully.');
})
.catch((error) => {
// console.log(error.name + ": " + error.message);
this.ArtificialTracker(error.message)
});
// 调用将询问用户是否允许访问摄像机。如果用户拒绝,它将引发异常并且不返回流。因此,必须在 try/catch 块内处理这种情况,它返回一个Promise,必须使用 async/await 或 then 块
// this.screenshot()
} else {
error = '手机不支持自动获取人脸'
this.ArtificialTracker(error)
}