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...