js和HTML5基于过滤器从摄像头中捕获视频的方法

这篇文章主要介绍了js+html5基于过滤器摄像头中捕获视频的方法,涉及javascript基于html5元素操作多媒体的使用技巧,需要的朋友可以参考下

本文实例讲述了js+HTML5基于过滤器从摄像头中捕获视频的方法。分享给大家供大家参考。具体如下:

index.html页面:

Native web camera streaming (getUserMedia) is not supported in this browser.

  

Current filter is: None

    

  

    

HTML5 

        

    

HTML5  object

      

登录后复制

style.css文件:

立即学习“前端免费学习笔记(深入)”;

.grayscale{  -webkit-filter:grayscale(1);  -moz-filter:grayscale(1);  -o-filter:grayscale(1);  -ms-filter:grayscale(1);  filter:grayscale(1);}.sepia{  -webkit-filter:sepia(0.8);  -moz-filter:sepia(0.8);  -o-filter:sepia(0.8);  -ms-filter:sepia(0.8);  filter:sepia(0.8);}.blur{  -webkit-filter:blur(3px);  -moz-filter:blur(3px);  -o-filter:blur(3px);  -ms-filter:blur(3px);  filter:blur(3px);}.brightness{  -webkit-filter:brightness(0.3);  -moz-filter:brightness(0.3);  -o-filter:brightness(0.3);  -ms-filter:brightness(0.3);  filter:brightness(0.3);}.contrast{  -webkit-filter:contrast(0.5);  -moz-filter:contrast(0.5);  -o-filter:contrast(0.5);  -ms-filter:contrast(0.5);  filter:contrast(0.5);}.hue-rotate{  -webkit-filter:hue-rotate(90deg);  -moz-filter:hue-rotate(90deg);  -o-filter:hue-rotate(90deg);  -ms-filter:hue-rotate(90deg);  filter:hue-rotate(90deg);}.hue-rotate2{  -webkit-filter:hue-rotate(180deg);  -moz-filter:hue-rotate(180deg);  -o-filter:hue-rotate(180deg);  -ms-filter:hue-rotate(180deg);  filter:hue-rotate(180deg);}.hue-rotate3{  -webkit-filter:hue-rotate(270deg);  -moz-filter:hue-rotate(270deg);  -o-filter:hue-rotate(270deg);  -ms-filter:hue-rotate(270deg);  filter:hue-rotate(270deg);}.saturate{  -webkit-filter:saturate(10);  -moz-filter:saturate(10);  -o-filter:saturate(10);  -ms-filter:saturate(10);  filter:saturate(10);}.invert{  -webkit-filter:invert(1);  -moz-filter:invert(1);  -o-filter: invert(1);  -ms-filter: invert(1);  filter: invert(1);}

登录后复制

script.js 文件:

// Main initializationdocument.addEventListener('DOMContentLoaded', function() {  // Global variables  var video = document.querySelector('video');  var audio, audioType;  var canvas = document.querySelector('canvas');  var context = canvas.getContext('2d');  // Custom video filters  var iFilter = 0;  var filters = [    'grayscale',    'sepia',    'blur',    'brightness',    'contrast',    'hue-rotate',    'hue-rotate2',    'hue-rotate3',    'saturate',    'invert',    'none'  ];  // Get the video stream from the camera with getUserMedia  navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||    navigator.mozGetUserMedia || navigator.msGetUserMedia;  window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;  if (navigator.getUserMedia) {    // Evoke getUserMedia function    navigator.getUserMedia({video: true, audio: true}, onSuccessCallback, onErrorCallback);    function onSuccessCallback(stream) {      // Use the stream from the camera as the source of the video element      video.src = window.URL.createObjectURL(stream) || stream;      // Autoplay      video.play();      // HTML5 Audio      audio = new Audio();      audioType = getAudioType(audio);      if (audioType) {        audio.src = 'polaroid.' + audioType;        audio.play();      }    }    // Display an error    function onErrorCallback(e) {      var expl = 'An error occurred: [Reason: ' + e.code + ']';      console.error(expl);      alert(expl);      return;    }  } else {    document.querySelector('.container').style.visibility = 'hidden';    document.querySelector('.warning').style.visibility = 'visible';    return;  }  // Draw the video stream at the canvas object  function drawVideoAtCanvas(obj, context) {    window.setInterval(function() {      context.drawImage(obj, 0, 0);    }, 60);  }  // The canPlayType() function doesn't return true or false. In recognition of how complex  // formats are, the function returns a string: 'probably', 'maybe' or an empty string.  function getAudioType(element) {    if (element.canPlayType) {      if (element.canPlayType('audio/mp4; codecs="mp4a.40.5"') !== '') {        return('aac');      } else if (element.canPlayType('audio/ogg; codecs="vorbis"') !== '') {        return("ogg");      }    }    return false;  }  // Add event listener for our video's Play function in order to produce video at the canvas  video.addEventListener('play', function() {    drawVideoAtCanvas(this, context);  }, false);  // Add event listener for our Button (to switch video filters)  document.querySelector('button').addEventListener('click', function() {    video.className = '';    canvas.className = '';    var effect = filters[iFilter++ % filters.length]; // Loop through the filters.    if (effect) {      video.classList.add(effect);      canvas.classList.add(effect);      document.querySelector('.container h3').innerHTML = 'Current filter is: ' + effect;    }  }, false);}, false);

登录后复制

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

如何解决HTML5 虚拟键盘出现挡住输入框的问题

如何解决HTML5 虚拟键盘出现挡住输入框的问题

以上就是js和HTML5基于过滤器从摄像头中捕获视频的方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3124316.html

(0)
上一篇 2025年3月29日 19:09:59
下一篇 2025年3月29日 19:10:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何解决HTML5 虚拟键盘出现挡住输入框的问题

    本文主要介绍了html5 虚拟键盘出现挡住输入框的解决办法。具有很好的参考价值,下面一起来看下吧 话不多说,请看代码: //防止键盘把当前输入框给挡住$$(‘input[type=”text”],textarea’).on(‘click’,…

    编程技术 2025年3月29日
    000
  • HTML5实现留言和回复的页面样式

    这篇文章主要介绍了用html5如何实现留言和回复样式,需要的朋友可以参考下 具体就不做详细讲解了,直接上代码: nbsp;html>web开发-webkfa.com*{margin:0;padding:0;-webkit-touch-…

    编程技术 2025年3月29日
    100
  • HTML5通讯录获取指定多个人的信息

    这篇文章主要介绍了详解HTML5+通讯录获取指定多个人的信息 ,非常具有实用价值,需要的朋友可以参考下。 本文介绍了HTML5通讯录获取指定多个人的信息,具体如下: 一、获取多个人的信息:要解决通讯录导入多个人的信息之前,要解决获取多个人的…

    编程技术 2025年3月29日
    100
  • 使用canvas实现迷宫游戏

    这篇文章主要介绍了关于使用canvas实现迷宫游戏,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前言 (最近设计模式看的有点头大,一直面对纯js实在是有些枯燥-_-。所以写一点有趣的东西调剂一下)现在canvas已经不算新…

    编程技术 2025年3月29日
    100
  • HTML5嵌入音频和视频的方法

    HTML5使用audio和video元素来嵌入音频和视频内容。可以让支持HTML5的浏览器不需要安装任何插件就可以播放视频和音频。 另外还提供了与这两个标签相关的 javascript api,这样就可以创建我们自己的音视频控件咯:    …

    编程技术 2025年3月29日
    100
  • 使用h5 canvas实现时钟的动态效果

    canvas 绘制好时钟界面,使用定时器定时重绘整个canvas,就实现了仿真动态时钟的效果。 难点在于: 秒钟刻度和时钟刻度的绘制 整点文字沿着内边圆形环绕 其中刻度的环绕并不难计算,文字的环绕就比较坑爹了,canvas绘制的文字是在绘制…

    2025年3月29日
    100
  • Storage Event如何实现页面间通信

    这篇文章分享给大家的内容是关于storage event如何实现页面间通信,内容很有参考价值,希望可以帮到有需要的小伙伴。 我们都知道触发window.onstorage必须满足以下两个条件: 通过localStorage.setItem或…

    编程技术 2025年3月29日
    100
  • h5实现放大镜效果的代码

    这篇文章分享给大家的内容是关于h5实现放大镜效果的代码,内容很有参考价值,希望可以帮到有需要的小伙伴。 最近公司做的艺术品放大效果,和以往的淘宝放大镜效果有些不同,这个需要在本图上放大 *{margin:0;padding:0} .demo…

    编程技术 2025年3月29日
    100
  • h5新特性的用法:监听App自带的返回键

    这篇文章给大家介绍的文章内容是关于使用h5新特性,轻松监听任何app自带返回键,有很好的参考价值,希望可以帮助到有需要的朋友。 1、前言 如今h5新特性、新标签、新规范等有很多,而且正在不断完善中,各大浏览器商对它们的支持,也是相当给力。作…

    编程技术 2025年3月29日
    100
  • canvas原生实现前端网页移动端签名

    这篇文章给大家介绍的文章内容是关于canvas原生实现前端网页移动端签名,适用于vue.js react 等任何框架,有很好的参考价值,希望可以帮助到有需要的朋友。 let c = document.getElementById(“canv…

    编程技术 2025年3月29日
    100

发表回复

登录后才能评论