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 相关文章推荐
js apply/call/caller/callee/bind使用方法与区别分析
Oct 28 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
Jul 15 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
JavaScript简单实现鼠标拖动选择功能
Mar 06 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
Jan 02 Javascript
JS操作COOKIE实现备忘记录的方法
Apr 01 Javascript
js实现带进度条提示的多视频上传功能
Dec 13 Javascript
详解vue-cli 接口代理配置
Dec 13 Javascript
vue.js移动数组位置,同时更新视图的方法
Mar 08 Javascript
VUE 实现复制内容到剪贴板的两种方法
Apr 24 Javascript
js简单遍历获取对象中的属性值的方法示例
Jun 19 Javascript
解决vue-photo-preview 异步图片放大失效的问题
Jul 29 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
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
Python+PIL实现支付宝AR红包
2018/02/09 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
详解Python数据分析--Pandas知识点
2019/03/23 Python
简单了解Python生成器是什么
2019/07/02 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
python help函数实例用法
2020/12/06 Python
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
Burt’s Bees英国官网:世界领先的天然个人护理品牌
2020/08/17 全球购物
最新党员的自我评价分享
2013/11/04 职场文书
中专毕业生自荐信
2013/11/16 职场文书
开会迟到检讨书
2014/01/08 职场文书
低碳环保演讲稿
2014/08/28 职场文书
基层党员对照检查材料
2014/09/24 职场文书
公司给客户的感谢信
2015/01/23 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
入党团支部推荐意见
2015/06/02 职场文书
导游词之珠海轮廓
2019/10/25 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
如何理解PHP核心特性命名空间
2021/05/28 PHP
JS实现简单的九宫格抽奖
2022/06/28 Javascript