0.1.5 • Published 6 years ago

video-analysis v0.1.5

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

Video Analysis

npm npm npm

  • video -> canvas ->canvas
  • 黑屏屏蔽:
    • 画布getImageData()计算rgba颜色值,通过算法比较
    • ImageData 全黑状态0,0,0,255;
    • 过滤算法:
      • Uint8ClampedArray.prototype.findIndex()全部匹配,时间测试(500X300画布)
        • 实现:
                data.findIndex((val,index)=>index%4===3?val!==255:val!==0)
        • 无黑色:0-6ms
        • 全黑色:14-20ms
      • 抽样点匹配,时间测试(基础5点+抽样频率50像素一个点)(500X300画布) 50个点
          const point1=context.getImageData(0,0,1,1).data;
          if("0,0,0,255"!==point1.toString()){
              return true;
          }
          const point2=context.getImageData(canvas.width/2-1,canvas.height/2-1,1,1).data;
          if("0,0,0,255"!==point2.toString()){
              return true;
          }
          
          const point3=context.getImageData(canvas.width-1,0,1,1).data;
          if("0,0,0,255"!==point3.toString()){
              return true;
          }
          const point4=context.getImageData(0,canvas.height-1,1,1).data;
          if("0,0,0,255"!==point4.toString()){
              return true;
          }
          const point5=context.getImageData(canvas.width-1,canvas.height-1,1,1).data;
          //[0,0,0,255]
          if("0,0,0,255"!==point5.toString()){
              return true;
          }
          
          //采样
          const length=Math.floor(canvas.width/50);
          const depth=Math.floor(canvas.height/50);
          for(let i =1;i<length;i++){
              for(let j =1;j<depth;j++){
                  const point = context.getImageData(50*i-1,50*j-1,1,1).data;
                  if("0,0,0,255"!==point.toString()){
                      return true;
                  }
              }
          }
          return false;
        • 无黑色:0-2ms
        • 全黑色:0-2ms
    • 通过比较验证,抽样算法更优,50分辨率几乎能够确保有光源即可检测到,光源抽样范围足够小,可调节

    • 透明屏蔽:等同于黑屏屏蔽
    • 使用requestAnimationFrame 每一帧执行时间是在27-40ms左右,1s中帧率低于60fps,会出现视屏卡顿,采用setTimeout 0 替代
0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago

0.0.9

6 years ago

0.0.8

6 years ago

0.0.7

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago