方式1
Navigator 对象包含有关浏览器的信息。
navigator.mediaDevices.getUserMedia();//获取一个媒体流
开启摄像头简单代码
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></head><body><div><div id="play">开启摄像</div><div id="take">拍照</div><video id="video"></video><!-- 尽量在canvas标签上设置宽高 --><canvas id="canvas" width="300px" height="300px"></canvas></div><script>// 开启摄像document.getElementById('play').onclick = () => {//获取媒体流navigator.mediaDevices.getUserMedia({video: true //开启视频流}).then(res => {//将返回值给video设置上//src 是播多媒体文件的;srcobj 是实时流document.getElementById('video').srcObject = res//将video启动document.getElementById('video').play()})// 失败就失败了}// 拍照、canvas绘制document.getElementById('take').onclick = () => {let ctx = document.getElementById("canvas").getContext('2d')//将获取的图片生成照片ctx.drawImage(document.getElementById("video"), 0, 0, 300, 300)document.getElementById("canvas")}</script></body>
自动获取摄像头
<body><video id="video"></video><canvas id="canvas"></canvas><div id="div" style="background:rosybrown;width: 200px;height: 200px">开启摄像头</div><div id="div1" style="background:rosybrown;width: 200px;height: 200px">拍照</div></body><script>var video = document.getElementById('video');var div = document.getElementById('div');var div1 = document.getElementById('div1');var canvas = document.getElementById('canvas');var deviceInfoId = ""; //摄像头IDlet num = 0; //摄像头数量let carema = []; //摄像头ID数组//在页面加载完成后获得设备ID数组window.onload = navigator.mediaDevices.enumerateDevices().then(res => {//res是全部的外设 找到摄像头的外设存下来for (let i = 0; i < res.length; ++i) {if (res[i].kind === 'videoinput') {carema.push(res[i].deviceId)}}deviceInfoId = carema[1];//第二个id当做默认摄像头 0索引获取不到 1是前置 2是后置})div.onclick = () => {//navigator.userAgent可以获取打开的设备var ua = navigator.userAgent.toLowerCase();if (ua.match("android") == "android") {alert("android");}//获取媒体流navigator.mediaDevices.getUserMedia({//通过deviceId获取摄像头video: {deviceId: deviceInfoId,}}).then(res => {video.srcObject = res;video.play();})}div1.onclick = () => {let ctx = canvas.getContext('2d');ctx.drawImage(document.getElementById("video"), 0, 0, 200, 200);//将图片转成Base64加密数据 可以传给后端让后端解析var data = canvas.toDataURL("image/png");}</script>
方式2
通过input调取摄像头进行拍照
accept表示,直接打开系统文件目录。让你进行选择capture如果没有会让你进行选择文件或者打开相机 设置后会直接打开相机//直接打开相机拍照<input type="file" accept="image/*" capture="camera">//直接打开摄像机<input type="file" accept="video/*" capture="camcorder">//这个好像会也会打开相机<input type="file" accept="audio/*" capture="microphone">
