如何使用浏览器调用摄像头
在JavaScript中使用浏览器调用摄像头会使用到以下方法:navigator.getUserMedia({video:true,audio:false},success,error)
参数1:是一个对象包含摄像头和麦克风{video:true,audio:false}
true表示开启,false表示关闭
参数2:调用成功回调success
参数3:调用失败回调error
需求:
- 调用摄像头和麦克风
- video视频标签显示摄像头图像
- 将摄像头捕获的图像放置在页面canvas标签
实现:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style>
video{
width: 300px;
height: 300px;
border: 1px solid #ccc;
}
canvas{
width: 300px;
height: 300px;
border: 1px solid red;
}
</style>
<title>Document</title>
</head>
<body>
<video autoplay id='video'></video>
<canvas id="output"></canvas>
</body>
</html>
<script>
//var video = document.getElementById('video')
//var back = document.getElementById('output')
var video = $("#video").get(0)
var back = $("#output").get(0)
//console.log(back,video)
var backcontext = back.getContext('2d')
function draw() {
backcontext.drawImage(video,0,0,back.width,back.height)
try{
backcontext.drawImage(video,0,0,back.width,back.height)
}catch(e){
if(e.name == "NS_ERROR_NOT_AVAILABLE"){
return setInterval(draw,200)
}else{
throw e
}
}
setTimeout(draw,200)
}
var success = function(stream){
console.log('摄像头开启成功')
//videoUrl = window.URL.createObjectURL(stream)
//video.src = videoUrl
video.srcObject = stream
draw()
}
var error = (error)=>{
alert('调用失败')
}
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia
navigator.getUserMedia({video:true,audio:false},success,error)
</script>
效果图: