vueh5调用摄像头拍照_H5实现调用本地摄像头实现实时视频以及拍照功能

本文介绍了如何使用 Vue 和 HTML5 API 实现在浏览器中调用摄像头进行实时视频显示,并实现拍照功能。通过 getUserMedia 方法兼容不同浏览器,结合 video 和 canvas 元素,实现了视频流的播放和截图。点击按钮即可完成拍照操作。
摘要由CSDN通过智能技术生成
摄像头拍照

拍照

//访问用户媒体设备的兼容方法

function getUserMedia(constraints, success, error) {

if (navigator.mediaDevices.getUserMedia) {

//最新的标准API

navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error);

} else if (navigator.webkitGetUserMedia) {

//webkit核心浏览器

navigator.webkitGetUserMedia(constraints,success, error)

} else if (navigator.mozGetUserMedia) {

//firfox浏览器

navigator.mozGetUserMedia(constraints, success, error);

} else if (navigator.getUserMedia) {

//旧版API

navigator.getUserMedia(constraints, success, error);

}

}

let video = document.getElementById('video');

let canvas = document.getElementById('canvas');

let context = canvas.getContext('2d');

function success(stream) {

//兼容webkit核心浏览器

let CompatibleURL = window.URL || window.webkitURL;

//将视频流设置为video元素的源

console.log(stream);

//video.src = CompatibleURL.createObjectURL(stream);

video.srcObject = stream;

video.play();

}

function error(error) {

console.log(`访问用户媒体设备失败${error.name}, ${error.message}`);

}

if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia) {

//调用用户媒体设备, 访问摄像头

getUserMedia({video : {width: 480, height: 320}}, success, error);

} else {

alert('不支持访问用户媒体');

}

document.getElementById('capture').addEventListener('click', function () {

context.drawImage(video, 0, 0, 480, 320);

})

---------------------

作者:刘翾

来源:CSDN

原文:https://blog.csdn.net/c_kite/article/details/78536451

版权声明:本文为博主原创文章,转载请附上博文链接!

实现摄像头自建HTML直播,需要使用WebRTC技术。WebRTC是一种开放源代码项目,它提供了实时通信(RTC)功能,允许浏览器和移动应用程序之间进行语音通话,视频聊天和P2P文件共享,而无需插件或其他软件。 下面是一个基于WebRTC实现调用本地摄像头实时视频拍照的示例H5代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>摄像头直播</title> <style> #video { width: 640px; height: 480px; } </style> </head> <body> <h1>摄像头直播</h1> <video id="video" autoplay></video> <br> <button id="btn-photo">拍照</button> <canvas id="canvas"></canvas> <script> // 获取video元素 var video = document.getElementById('video'); // 获取拍照按钮 var btnPhoto = document.getElementById('btn-photo'); // 获取canvas元素 var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); // 获取用户媒体设备(摄像头) navigator.mediaDevices.getUserMedia({ video: true, audio: false }) .then(function (stream) { // 将媒体流绑定到video元素上 video.srcObject = stream; video.play(); }) .catch(function (error) { console.log('获取摄像头失败:', error); }); // 拍照事件 btnPhoto.addEventListener('click', function () { // 将canvas的大小设置为和video一样大 canvas.width = video.videoWidth; canvas.height = video.videoHeight; // 将video中的图像绘制到canvas上 context.drawImage(video, 0, 0, canvas.width, canvas.height); // 将canvas中的图像保存为图片 var imgUrl = canvas.toDataURL('image/png'); // 显示图片 var img = new Image(); img.src = imgUrl; document.body.appendChild(img); }); </script> </body> </html> ``` 上述代码中,首先获取了video元素、拍照按钮和canvas元素。然后通过`navigator.mediaDevices.getUserMedia()`方法获取用户媒体设备(摄像头),将媒体流绑定到video元素上,并播放视频。当用户点击拍照按钮时,将canvas的大小设置为和video一样大,将video中的图像绘制到canvas上,然后将canvas中的图像保存为图片,并显示在页面上。 需要注意的是,由于涉及到摄像头和麦克风等敏感设备的访问,需要使用HTTPS协议或localhost来访问页面,否则浏览器会提示用户授权访问设备。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值