当我尝试使用getUserMedia api启动摄像头时,浏览器会缓存权限决定,对于Chrome和firefox,我们可以在地址栏或浏览器设置中更改(先前)摄像头权限,之后getUserMedia的工作方式如下:预期
但是在 Microsoft Edge或Mac Safari 浏览器中找不到任何这样的方式,在这些浏览器中,一旦权限被浏览器会话缓存而被拒绝,并且在刷新浏览器之前不会启动权限警报。
请尝试以下FutureBuilder
中的链接只想知道,Edge和Safari中是否有任何设置可以重置权限而不刷新浏览器?这样,如果用户错误地关闭/拒绝了权限,则不必重新加载页面并重新开始。
var startVideo = function(){
debugger;
navigator.mediaDevices.getUserMedia({video: { facingMode: "user" }})
.then(function(mediaStream) {
var video = document.querySelector('#camera');
video.srcObject = mediaStream;
video.onloadedmetadata = function(e) {
video.play();
};
})
.catch(function(err) { alert(err.message); });
}
document.getElementById("startVideo").onclick = startVideo
section {
background: #f2f2f2;
text-align: left;
}
p {
display: block;
margin: 10px;
}
button {
display: block;
padding: 10px;
margin: 20px auto;
font-size: 22px;
}
video {
border: 2px solid #f2f;
}
<section >
<p>
Click the button below to launch Camera, try on Edge and Safari as well.
</p>
<p>
<strong>NOTE:</strong> If you deny the permission the button doesnt launch the permission popup again in Edge and Safari.
</p>
<button id="startVideo" >
start video
</button>
<video id="camera" autoplay="true" />
</section>