js调用网页摄像头进行直播/拍照
温馨提示:
本文最后更新于 2022年02月17日,已超过 965 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
前置条件
需要https/火狐浏览器
网页需要有摄像头
创建一个html文件,里面包含2个标签:
video 视频播放标签,canvas 图片渲染标签:
<video id="video" autoplay style="width: 480px;height: 320px"></video>
<canvas id="canvas" width="480" height="320"></canvas>
核心代码
获取浏览器支持的流媒体对象
function getUserMediaToPhoto(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) {
//firefox浏览器
navigator.mozGetUserMedia(constraints, success, error);
} else if (navigator.getUserMedia) {
//旧版API
navigator.getUserMedia(constraints, success, error);
}
}
通过此函数,获取当前浏览器支持的getUserMedia 对象
开启浏览器摄像头/语音权限
getUserMediaToPhoto({ video: { width: 480, height: 320 },audio: true }, success, error);
具体文档可查看:https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia
流处理:
调用后,浏览器将请求拍照权限,设备允许后将调用回调函数:
var video = document.getElementById('video');
var success = function(stream){
video.srcObject = stream;
}
stream是一个mediaSteam对象https://developer.mozilla.org/en-US/docs/Web/API/MediaStream
新建一个video标签,id为video,将srcObject赋值为stream即可在网页预览摄像头数据:
截图或流媒体传输:
流媒体传输可以自己百度,本人懒得整,这边说一下将video截图实现拍照功能:
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
// 将video画面描绘在canvas画布上
context.drawImage(video, 0, 0, 480, 320);
正文到此结束
- 本文标签: 编程语言
- 本文链接: https://www.php20.cn/article/339
- 版权声明: 本文由仙士可原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权