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 实用的文字链提示框效果
Jun 30 Javascript
eclipse导入jquery包后报错的解决方法
Feb 17 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
Javascript 浮点运算精度问题分析与解决
Mar 26 Javascript
JavaScript判断前缀、后缀是否是空格的方法
Apr 15 Javascript
jquery仿百度百科底部浮动导航特效
Aug 08 Javascript
js实现向右横向滑出的二级菜单效果
Aug 27 Javascript
Bootstrap每天必学之栅格系统(布局)
Nov 25 Javascript
JS实现动态修改table及合并单元格的方法示例
Feb 20 Javascript
使用pkg打包Node.js应用的方法步骤
Oct 19 Javascript
Vue中keep-alive组件的深入理解
Aug 23 Javascript
在nuxt中使用路由重定向的实例
Nov 06 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高手?学会“懒惰”的编程
2006/12/05 PHP
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
Extjs学习笔记之一 初识Extjs之MessageBox
2010/01/07 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
AngularJS表单验证功能
2017/10/19 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
python连接mongodb密码认证实例
2018/10/16 Python
python2与python3中关于对NaN类型数据的判断和转换方法
2018/10/30 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python实现文法左递归的消除方法
2020/05/22 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
查环查孕证明
2014/01/10 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
挂牌仪式主持词
2014/03/20 职场文书
应届生求职自荐信
2014/07/04 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技