- 简单搭建一下页面
<video autoplay style="width: 480px; height: 320px;"></video>
<div>
<button id="capture">拍照</button>
</div>
<canvas id="canvas" width="480" height="320"></canvas>
- 获取标签
function $(select){
return document.querySelector(select);
}
let video = $('video');
let capture = $('#capture');
let ctx = $('#canvas').getContext('2d');
3.用navigator.mediaDevices.getUserMedia调取摄像头的媒体对象
这个方法的参数为捕捉到的流所要放置的位置 这里为video。后面有.then(捕捉成功时走的方法).catct(失败时走的方法)
navigator.mediaDevices.getUserMedia({
video:{
width: 480,
height: 320
}
}).then(function(stream){
}).catch(function(err){
console.log(err);
})
4.捕捉stream成功时 先获取URL 然后用try/catct捕捉。成功获取到URL时 用
URL.createObjectURL(stream)获取video所用到的src
navigator.mediaDevices.getUserMedia({
video:{
width: 480,
height: 320
}
}).then(function(stream){
let URL = window.URL || window.webkitURL;
try {
video.src = URL.createObjectURL(stream);
} catch (error) {
video.srcObject = stream;
}
}).catch(function(err){
console.log(err);
})
- 用canvas捕捉画面(拍照)
canvas.drawImage()方法里第一个参数也可以是video对象
capture.onclick = function(){
ctx.drawImage(video,0,0,480,320);
}
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<video autoplay style="width: 480px; height: 320px;"></video>
<div>
<button id="capture">拍照</button>
</div>
<canvas id="canvas" width="480" height="320"></canvas>
<script type="text/javascript">
window.onload = function(){
function $(select){
return document.querySelector(select);
}
let video = $('video');
let capture = $('#capture');
let ctx = $('#canvas').getContext('2d');
navigator.mediaDevices.getUserMedia({
video:{
width: 480,
height: 320
}
}).then(function(stream){
let URL = window.URL || window.webkitURL;
try {
video.src = URL.createObjectURL(stream);
} catch (error) {
video.srcObject = stream;
}
}).catch(function(err){
console.log(err);
})
capture.onclick = function(){
ctx.drawImage(video,0,0,480,320);
}
}
</script>
</body>
</html>