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小问题说明
Sep 26 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
Oct 16 Javascript
JavaScript中字符串拼接的基本方法
Jul 07 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
Feb 02 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
基于Node.js实现压缩和解压缩的方法
Feb 13 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
npm 常用命令详解(小结)
Jan 17 Javascript
vue 实现锚点功能操作
Aug 10 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
解析link_mysql的php版
2013/06/30 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
原生js+canvas实现下雪效果
2020/08/02 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
浅析python参数的知识点
2018/12/10 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python pandas时序处理相关功能详解
2019/07/03 Python
django admin 添加自定义链接方式
2020/03/11 Python
flask开启多线程的具体方法
2020/08/02 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
canvas像素画板的实现代码
2018/11/21 HTML / CSS
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
高中毕业自我鉴定范文
2013/10/02 职场文书
医学护理毕业生自荐信
2013/11/07 职场文书
户外婚礼策划方案
2014/02/08 职场文书
安全生产计划书
2014/05/04 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
免职通知
2015/04/23 职场文书
2016新年年会主持词
2015/07/06 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python