js实现web调用摄像头 js截取视频画面


Posted in Javascript onApril 21, 2019

本文实例为大家分享了JS实现截取视频画面的具体代码,供大家参考,具体内容如下

Html

<p>
 <button onclick="openMedia()">打开</button>
 <button onclick="closeMedia()">关闭</button>
 <button onclick="drawMedia()">截取</button>
</p>
<video id="video" class="bg"></video>
<canvas id="qr-canvas"></canvas>

Javascript

<script type="text/javascript">
 var video = document.querySelector('video');
 var text = document.getElementById('text');
 var canvas1 = document.getElementById('qr-canvas');
 var context1 = canvas1.getContext('2d');
 var mediaStreamTrack;

 // 一堆兼容代码
 window.URL = (window.URL || window.webkitURL || window.mozURL || window.msURL);
 if (navigator.mediaDevices === undefined) {
 navigator.mediaDevices = {};
 }
 if (navigator.mediaDevices.getUserMedia === undefined) {
 navigator.mediaDevices.getUserMedia = function(constraints) {
  var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
  if (!getUserMedia) {
  return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
  }
  return new Promise(function(resolve, reject) {
  getUserMedia.call(navigator, constraints, resolve, reject);
  });
 }
 } 

 //摄像头调用配置
 var mediaOpts = {
 audio: false,
 video: true,
 video: { facingMode: "environment"} // 或者 "user"
 // video: { width: 1280, height: 720 }
 // video: { facingMode: { exact: "environment" } }// 或者 "user"
 }

 // 回调
 function successFunc(stream) {
 mediaStreamTrack = stream;
 video = document.querySelector('video');
 if ("srcObject" in video) {
  video.srcObject = stream
 } else {
  video.src = window.URL && window.URL.createObjectURL(stream) || stream
 }
 video.play();
 }
 function errorFunc(err) {
 alert(err.name);
 }

 // 正式启动摄像头
 function openMedia(){
 navigator.mediaDevices.getUserMedia(mediaOpts).then(successFunc).catch(errorFunc);
 }

 //关闭摄像头
 function closeMedia(){
 mediaStreamTrack.getVideoTracks().forEach(function (track) {
  track.stop();
  context1.clearRect(0, 0,context1.width, context1.height);//清除画布
 });
 }

 //截取视频
 function drawMedia(){
 canvas1.setAttribute("width", video.videoWidth);
 canvas1.setAttribute("height", video.videoHeight);
 context1.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
 }

</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
使用typeof方法判断undefined类型
Sep 09 Javascript
JS实现图片放大镜效果的方法
Feb 27 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
jQuery实现带延迟效果的滑动菜单代码
Sep 02 Javascript
深入理解jQuery之事件移除
Jun 02 Javascript
JavaScript 数组中最大最小值
Jun 05 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
jQuery实现页面点击后退弹出提示框的方法
Aug 24 Javascript
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
js数组方法reduce经典用法代码分享
Jan 07 Javascript
node基于puppeteer模拟登录抓取页面的实现
May 09 Javascript
jsonp跨域及实现百度首页联想功能的方法
Aug 30 Javascript
今天,小程序正式支持 SVG
Apr 20 #Javascript
详解Vue中组件的缓存
Apr 20 #Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 #Javascript
优雅地使用loading(推荐)
Apr 20 #Javascript
详解JavaScript的数据类型以及数据类型的转换
Apr 20 #Javascript
详解key在Vue列表渲染时究竟起到了什么作用
Apr 20 #Javascript
函数式编程入门实践(一)
Apr 20 #Javascript
You might like
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php while循环控制的简单实例
2016/05/30 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
Textarea根据内容自适应高度
2013/10/28 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
2020/10/15 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
python列表去重的二种方法
2014/02/14 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
移动通信行业实习自我鉴定
2013/09/28 职场文书
营业员实习自我鉴定
2013/12/07 职场文书
班组长岗位职责范本
2014/01/05 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
美术教师个人工作总结
2015/02/06 职场文书
员工开除通知书
2015/04/25 职场文书
教师网络培训心得体会
2016/01/09 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
MySQL主从切换的超详细步骤
2022/06/28 MySQL