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 相关文章推荐
javascript读取xml
Nov 04 Javascript
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
解决URL地址中的中文乱码问题的办法
Feb 10 Javascript
利用JS测试目标网站的打开响应速度
Dec 01 Javascript
深入浅析JSONAPI在PHP中的应用
Dec 24 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 Javascript
layui.tree组件的使用以及搜索节点功能的实现
Sep 26 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 Javascript
JS+CSS实现动态时钟
Feb 19 Javascript
手写Spirit防抖函数underscore和节流函数lodash
Mar 22 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
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
利用Ffmpeg获得flv视频缩略图和视频时间的代码
2011/09/15 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
layui表格数据复选框回显设置方法
2019/09/13 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
python读取word文档的方法
2015/05/09 Python
python实现汉诺塔方法汇总
2016/07/25 Python
python实现图片筛选程序
2018/10/24 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
党的群众路线教育实践活动宣传方案
2014/02/23 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
远程培训的心得体会
2014/09/01 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
幼儿园开学通知
2015/04/24 职场文书
银行求职信范文
2019/05/13 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android