用canvas来把彩色的视频转换成黑白视频!

原创
2014/08/21 11:00
阅读数 1.9K

最近研究html5 canvas,发现html canvas可以读取视频文件里面的帧并显示。 如下面代码所示: context.drawImage(video,0,0,canvas.width,canvas.height);

于是萌生一个想法,可以用来对视频进行一些比较有趣的处理,下面是一个用canvas实现的把彩色的视频处理成黑白视频,够文艺吧。原理就是,用canvas实时读出视频的帧数据然后通过程序转换成黑白图片并实时显示在cavnas,这样用户看到的讲是一个黑白视频:),效果如下图所示:

在此输入图片描述 上代码: <div> <div id = "video" style="display:block;"> <video id="tenvideo_video_player_0" autoplay="autoplay" width="200" height="200" src="video.mp4"></video> </div> <canvas id='vcanvas' width="200" height="200" "></canvas> </div>

   var video = document.getElementById('tenvideo_video_player_0');
   var canvas = document.getElementById('vcanvas');
   var context = canvas.getContext('2d');
   function animate(){
       if(!video.ended){
           context.drawImage(video,0,0,canvas.width,canvas.height);
  var imgdata=context.getImageData(0,0,canvas.width,canvas.height);
        var data=imgdata.data;
   for(var i=0,n=data.length;i<n;i+=4){
                var average=(data[i]+data[i+1]+data[i+2])/3;
                data[i]=average;
                data[i+1]=average;
                data[i+2]=average;
            }
context.putImageData(imgdata,0,0);
           window.requestAnimationFrame(animate);
       }
   }
   document.addEventListener('DOMContentLoaded', function(){
        video.addEventListener('play', function(){
                console.log('play');
                 window.requestAnimationFrame(animate);
        },false);
   });

专注移动的增量更新js框架

展开阅读全文
加载中
点击加入讨论🔥(1) 发布并加入讨论🔥
1 评论
26 收藏
1
分享
返回顶部
顶部