如何计算HTML视频的实际FPS?

时间:2016-07-29 06:26:40

标签: javascript html5 video frame-rate

我正在构建一个能够从我们的服务器传输9个实时视频的网络应用程序,我希望通过检查每个视频的FPS速率来深入了解并提高网络性能。 我的意思是我试图获得图形硬件试图在一秒钟内渲染的帧数。

image

这是Chrome提供的FPS表。有没有办法建立我自己的视频对应的FPS表?每个视频都应该有自己的仪表运行。

更新1

我尝试使用此Library,结果有点奇怪。

var stats1 = new Stats(); stats1.setMode( 0 );
var vSource = 'trailer.mp4';

var myVideo1 = document.createElement( 'video' );
  myVideo1.width = 512;
  myVideo1.src = vSource;
  myVideo1.controls = 'true';

var myTable = document.getElementById('myTable');
  var row1 = document.getElementById('row1');

row1.appendChild( stats1.domElement );
  row1.appendChild(myVideo1);

setInterval( function () {
    stats1.begin();
    myVideo1.play();
    stats1.end();
}, 1000 / 24 );

这是我使用Link

的图书馆摘要
    begin: function () {

        startTime = Date.now();

    },

    end: function () {

        var time = Date.now();

        ms = time - startTime;
        msMin = Math.min( msMin, ms );
        msMax = Math.max( msMax, ms );

        msText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')';
        updateGraph( msGraph, Math.min( 30, 30 - ( ms / 200 ) * 30 ) );

        frames ++;

        if ( time > prevTime + 1000 ) {

            fps = Math.round( ( frames * 1000 ) / ( time - prevTime ) );
            fpsMin = Math.min( fpsMin, fps );
            fpsMax = Math.max( fpsMax, fps );

            fpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')';
            updateGraph( fpsGraph, Math.min( 30, 30 - ( fps / 100 ) * 30 ) );

            prevTime = time;
            frames = 0;

        }

        return time;

    },

    update: function () {

        startTime = this.end();

    }

我担心的是,算法似乎是错误的,而我得到的结果并不正确......

该库的最初目的是测量Javascript性能,我可以用它来测量特定的视频FPS吗?

1 个答案:

答案 0 :(得分:0)

不计算视频的帧速率,将其存储为视频元数据的一部分。视频标题中只有一个字段表示每秒有多少帧(或者每帧显示的时间量)。这与浏览器知道视频分辨率的方式相同。