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获取当前ip的代码
May 10 Javascript
让复选框只能选择一项的方法
Oct 08 Javascript
下拉列表select 由左边框移动到右边示例
Dec 04 Javascript
让图片跳跃起来  javascript图片轮播特效
Feb 16 Javascript
原生JavaScript实现AJAX、JSONP
Feb 07 Javascript
详细AngularJs4的图片剪裁组件的实例
Jul 12 Javascript
jQuery实现html双向绑定功能示例
Oct 09 jQuery
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 Javascript
JS实现读取xml内容并输出到div中的方法示例
Apr 19 Javascript
vue.js学习笔记之v-bind和v-on解析
May 03 Javascript
通过webpack引入第三方库的方法
Jul 20 Javascript
javascript局部自定义鼠标右键菜单
Dec 08 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中explode与split的区别介绍
2012/10/03 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
php绘制一条弧线的方法
2015/01/24 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
jQuery 动画基础教程
2008/12/25 Javascript
DOM下的节点属性和操作小结
2009/05/14 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
node.js通过url读取文件
2020/10/16 Javascript
Python 学习笔记
2008/12/27 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
十个Python程序员易犯的错误
2015/12/15 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
python读取Excel表格文件的方法
2019/09/02 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
运动会广播稿500字
2014/01/28 职场文书
六查六看自查材料
2014/02/17 职场文书
投标保密承诺书
2014/05/19 职场文书
服务员岗位职责
2015/02/03 职场文书
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏