因为要做一个使用 js 代码来调用电脑摄像头,并进行一次拍照的功能,就花费了点时间研究了一下 WEB API的媒体输入接口,并写了点调试代码,大家可以参考一下。
WEB API 的 MediaDevices 接口,可以提供访问连接媒体输入的设备,如照相机和麦克风,以及屏幕共享等,他可以使你取得任何硬件资源的媒体数据。不过下面只针对获取摄像头的信息在谷歌浏览器的最新(87.0)版本上进行测试,其它品牌的浏览器没有测试!
测试注意:
1、只在 chrome 87.0 版本上测试过
2、测试时,浏览器会询问是否开启摄像头,必须允许后才能使用(个别情况下浏览器会屏蔽摄像头)
3、如果使用在线测试,网址必须为 HTTPS 协议,否则浏览器会屏蔽摄像头
4、本地测试时,虽然浏览器询问是否开启摄像头,但没有调用成功,不知道怎么回事
更多的功能可以参考下面两个链接的内容:
https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia
js调用打开摄像头的测试代码:
先上测试效果图:
测试代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <script src="https://cdn.staticfile.org/jquery/2.2.4/jquery.min.js"></script> <title>JS调用摄像头的示例-</title> </head> <body> <video src=""></video> <canvas id="canvas"></canvas> <button>拍照</button> <img src=""> <script type="text/javascript"> var video = document.querySelector('video'); navigator.mediaDevices.getUserMedia({ audio: true, video: { width: 200, height: 150 } }) .then(function (stream) { try { video.src = window.URL.createObjectURL(stream); } catch (e) { video.srcObject = stream; video.onloadedmetadata = function(e){ video.play(); } } }) .catch(function (err) { console.log(err); //如果无法调用摄像头,这里会提示错误 }); $('button').on('click',function(){ var canvas = document.getElementById('canvas'); canvas.getContext('2d').drawImage(video,0,0,200,150); // canvas 拍照 var image = new Image(); //必须使用 Image ,不然 canvas 的 toDataURL 方法会报错,可不是闲着蛋疼 image.src = canvas.toDataURL("image/png"); //base64 类型的图片 $('img').attr('src', image.src); }) </script> </body> </html>
本文javascript调用摄像头以及拍照的方法到此结束。欲望得不到满足痛苦;欲望一旦满足就无聊,生命就是在痛苦和无聊之间摇摆。小编再次感谢大家对我们的支持!