如何设置浏览器调用摄像头 电脑网页摄像头权限开启方法

如何通过js调用本地摄像头?获取后如何截图视频?在这里,我和大家一起做一个简单的演示,实现以上功能。涉及的知识点navigator.getUserMedia可以通过该函数来打开摄像头获得流数据canvas.drawI***ge可以通过该函数来将视频的某帧画到canvas画布上canvas.toDataURL可以通过该...

如何通过js调用本地摄像头?获取后如何截图视频?在这里,我和大家一起做一个简单的演示,实现以上功能。

涉及的知识点

navigator.getUserMedia

可以通过该函数来打开摄像头获得流数据

canvas.drawI***ge

可以通过该函数来将视频的某帧画到canvas画布上

canvas.toDataURL

可以通过该函数将canvas画布生成图片url

实现的功能点

打开摄像头暂停摄像头对视频进行截图

简单的html布局

我们先通过HTML实现一个简单的布局,包括样式和按钮。

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>H5 canvas 调用摄像头进行绘制</title> <style> html,body{ width:100%; height:100%; padding: 0px; ***rgin: 0px; overflow: hidden; } #canvas{ width:500px; height:300px; } #video{ width:500px; height:300px; } .btn{ display:inline-block; text-align: center; background-color: #333; color:#eee; font-size:14px; padding:5px 15px; border-radius: 5px; cursor:pointer; } </style></head><body> <video id="video" autoplay="true" style="background-color:#ccc;display:none;"></video> <div style="width:500px;height:300px;***rgin:30px auto;"> <canvas id="canvas" width="500px" height="300px">您的浏览器不支持H5 ,请更换或升级!</canvas> <span class="btn" filter="screenshot">截图</span> <span class="btn" filter="close">暂停</span> <span class="btn" filter="open">打开</span> </div> <div style="width:500px;height:300px;***rgin:40px auto;" id="show"></div></body></html>

样子差不多是这样的:

看起来是这样的:

Hahia空是白色的。

我们隐藏了视频,然后添加了几个按钮,以及画布和底部图片显示区(用来存储截图)。

Js实现功能

首先是核心代码:

navigator.getUserMedia({ video : {width:500,height:300}},function(stream){ LV.video.srcObject = stream; LV.video.onloadedmetadata = function(e) { LV.video.play(); };},function(err){ alert(err);//弹窗报错})

可以参考
:https://developer . Mozilla . org/en-us/docs/web/API/media devices/getuser media。

然后根据页面逻辑实现事件等功能,包括截图和暂停。

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; var events = { open : function(){ LV.open(); }, close : function(){ console.log(LV.timer); clearInterval(LV.timer); }, screenshot : function(){ //获得当前帧的图像并拿到数据 var i***ge = canvas.toDataURL('jpeg'); document.getElementById('show').innerHTML = '<img src="'+i***ge+'" style="width:500px;height:300px;" />' } }; var LV = { video : document.getElementById('video'), canvas : document.getElementById('canvas'), timer : null, media : null, open :function(){ if(!LV.timer){ navigator.getUserMedia({ video : {width:500,height:300} },function(stream){ LV.video.srcObject = stream; LV.video.onloadedmetadata = function(e) { LV.video.play(); }; },function(err){ alert(err);//弹窗报错 }) } if(LV.timer){ clearInterval(LV.timer); } //将画面绘制到canvas中 LV.timer = setInterval(function(){ LV.ctx.drawI***ge(LV.video,0,0,500,300); },15); }, init : function(){ LV.ctx = LV.canvas.getContext('2d'); //绑定事件 document.querySelectorAll('[filter]').forEach(function(item){ item.onclick = function(ev){ var type = this.getAttribute('filter'); events[type].call(this,ev); } }); return LV; } }; LV.init();

原谅我放荡不羁的命名…

本文来自西绿柿投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/488694.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 04-03
下一篇 04-03

相关推荐

  • c语言log函数怎么调用 c语言编写log函数的方法

    对数函数的形象性和单调性是答案的热点话题,既有小题,也有大题。有时域、单调性、意象等。全部同时出现在一个问题中,有时会出现复合函数。这样的问题有一定的难度。经常提出相对较大的小题,有时利用单调性解决或证明不等式问题。这类题目通常会转换成同底数的对数,然后利

    2023-07-24 17:03:01
    838 0
  • mybatis调用存储过程详解 mybatis存储过程写法

    简历本文主要介绍MyBatis框架的工作原理和流程。MyBatis简介MyBatis是一个优秀的持久层框架,支持定制SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注释将原语类型、接口和Java POJOs(普通旧Java对象

    2023-07-18 14:54:01
    951 0
  • java调用接口的方法流程 常用接口调用方式

    在开发定制标记的过程中,有时需要重复处理标记体的内容。此时,您可以使用IterationTag接口,该接口继承自Tag接口,并基于Tag接口添加了一个EVAL_BODY_AGAIN常量和一个doAfterBody()方法,如下所示。1。EVAL_BODY_AGAIN常数常量EVAL_BODY_AGAIN是doafeterbody()方法的返回值

    2023-06-18 08:27:01
    557 0
  • vmwaretools安装教程 vm虚拟机调用独立显卡

    各位朋友,目前云计算的发展势不可挡,所以很多用户也在使用VM虚拟化云平台。今天网络小明给大家分享一些关于VM虚拟机的实践经验,期待大家一起分享学习,共同进步!现在的VMware Tools是一套实用的工具,可以增强虚拟机的客户操作系统的性能,改善虚拟机的管理。VMware Tool

    2023-06-17 13:27:01
    734 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信