count my camera FPS

count my camera FPS

by Thanos Saringelos

HTML

<div id='stats'>
</div>
<video autoplay></video>
<img src="">
<canvas style="display:none;"></canvas>

JavaScript

var video = document.querySelector('video');
  var canvas = document.querySelector('canvas');
  var ctx = canvas.getContext('2d');
  var image = document.querySelector('img');
  navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;

  window.URL = window.URL || window.webkitURL;
  

  if (navigator.getUserMedia) {
    navigator.getUserMedia({
        video: true,
        audio: true
      },
      function(stream) {
        video.src = window.URL.createObjectURL(stream);
        video.onloadedmetadata = function(e) {
          video.play();
          video.mute = true;
        };
      },
      function(err) {
        console.log("The following error occured: " + err.name);
      }
    );
  } else {
    console.log("getUserMedia not supported");
  }

  function calculateStats() {

    var decodedFrames = 0,
      droppedFrames = 0,
      startTime = new Date().getTime(),
      initialTime = new Date().getTime();

    window.setInterval(function() {

      //see if webkit stats are available; exit if they aren't
      if (!video.webkitDecodedFrameCount) {
        console.log("Video FPS calcs not supported");
        return;
      }
      //get the stats
      else {
        var currentTime = new Date().getTime();
        var deltaTime = (currentTime - startTime) / 1000;
        var totalTime = (currentTime - initialTime) / 1000;
        startTime = currentTime;

        // Calculate decoded frames per sec.
        var currentDecodedFPS = (video.webkitDecodedFrameCount - decodedFrames) / deltaTime;
        var decodedFPSavg = video.webkitDecodedFrameCount / totalTime;
        decodedFrames = video.webkitDecodedFrameCount;

        // Calculate dropped frames per sec.
        var currentDroppedFPS = (video.webkitDroppedFrameCount - droppedFrames) / deltaTime;
        var droppedFPSavg = video.webkitDroppedFrameCount / totalTime;
        droppedFrames = video.webkitDroppedFrameCount;

        //write the results...