js实现web调用摄像头 js截取视频画面

 更新时间:2019年04月21日 10:24:58   作者:qq_26833853  
这篇文章主要为大家详细介绍了JS web调用摄像头,截取视频画面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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判断按钮被点击的方法

    javascript代码判断按钮是否被点击了在项目中经常会遇到这个需求,今天小编抽点时间给大家分享一段代码关于javascript判断按钮是否被点击的方法,感兴趣的朋友一起学习吧
    2015-12-12
  • webpack中使用Eslint的实现

    webpack中使用Eslint的实现

    本文主要介绍了webpack中使用Eslint的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码

    滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码

    滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
    2009-12-12
  • postcss安装和使用示例详解

    postcss安装和使用示例详解

    这篇文章主要介绍了postcss安装和使用,通过这些深度集成,PostCSS不仅仅是一个简单的CSS处理工具,而是一种贯穿整个前端开发流程的技术手段,大大提升了CSS开发效率和产出质量,随着前端社区的发展,PostCSS的功能和应用场景也会更加丰富多元,需要的朋友可以参考下
    2024-03-03
  • 如何利用Web Speech API之speechSynthesis实现文字转语音功能

    如何利用Web Speech API之speechSynthesis实现文字转语音功能

    Web Speech API使你能够将语音数据合并到Web应用程序中,SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音,这篇文章主要介绍了利用Web Speech API之speechSynthesis实现文字转语音功能,需要的朋友可以参考下
    2024-06-06
  • 一文解决微信小程序button、input和image表单组件

    一文解决微信小程序button、input和image表单组件

    在微信小程序开发中,input 用来实现文本输入,如输入用户名密码等等,下面这篇文章主要给大家介绍了关于如何通过一文解决微信小程序button、input和image表单组件的相关资料,需要的朋友可以参考下
    2022-08-08
  • JS实现TITLE悬停长久显示效果完整示例

    JS实现TITLE悬停长久显示效果完整示例

    这篇文章主要介绍了JS实现TITLE悬停长久显示效果,结合完整实例形式分析了JavaScript鼠标事件响应及页面元素属性动态操作相关实现技巧,需要的朋友可以参考下
    2020-02-02
  • js变量以及其作用域详解

    js变量以及其作用域详解

    Javascript和Java、C这些语言不同,它是一种无类型、弱检测的语言。它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量
    2012-01-01
  • layer弹出层倒计时关闭的实现方法

    layer弹出层倒计时关闭的实现方法

    今天小编就为大家分享一篇layer弹出层倒计时关闭的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 用Webpack构建Vue项目的实践

    用Webpack构建Vue项目的实践

    这篇文章主要介绍了用Webpack构建Vue项目的实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论