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 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
jQuery Clone Bug解决代码
Dec 22 Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
Jun 12 Javascript
解决Angular4项目部署到服务器上刷新404的问题
Aug 31 Javascript
vue移动端监听滚动条高度的实现方法
Sep 03 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 Javascript
微信小程序常用的3种提示弹窗实现详解
Sep 19 Javascript
Vue如何提升首屏加载速度实例解析
Jun 25 Javascript
JS制作简易计算器的实例代码
Jul 04 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支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
PHP7 新增功能
2021/03/09 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
IE event.srcElement和FF event.target 功能比较
2010/03/01 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
JavaScript如何操作css
2020/10/24 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
python opencv实现运动检测
2018/07/10 Python
python+mysql实现教务管理系统
2019/02/20 Python
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
英文自我鉴定
2013/12/10 职场文书
工地资料员岗位职责
2013/12/31 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
学校火灾防控方案
2014/06/09 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
党的群众路线调研报告
2014/11/03 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
初中语文教学随笔
2015/08/15 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python