在c#中获取视频剪辑的帧率

本文关键字:帧率 视频 获取 | 更新日期: 2023-09-27 18:13:50

如何在c#中获得视频剪辑的帧率?视频剪辑为WMV、MP4、MPG格式。

在c#中获取视频剪辑的帧率

您可以使用IWMPNetwork::frameRate属性来获得视频的帧率(您需要将Interop.WMPLib.dll.dll添加到您的项目中)。

示例代码(取自上述链接):

// Add a delegate for the PlayStateChange event.
player.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(player_PlayStateChange);
// Create an event handler for the PlayStateChange event.
private void player_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
    // Display the frameRate when the player is playing. 
    switch (e.newState)
    {
        case 3:  // Play State = WMPLib.WMPPlayState.wmppsPlaying = 3
            if (player.network.frameRate != 0)
            {
                frameRateLabel.Text = "Current Frame Rate: " + player.network.frameRate + " K bits/second";
            }
            break;
        default:
            break;
    }
}

我已经使用了这里描述的代码来做这件事,并帮助了我很多。

实际上,每次打印一个新框架时,我都会调用以下函数:

private void FPS_Counter()
{
    _framesRendered++;
    if ((DateTime.Now - _lastTime).TotalSeconds >= 1)
    {
       Log.Debug("FPS: one second has elapsed (fps: " + _fps + ")");
       _fps = _framesRendered;
       _framesRendered = 0;
       _lastTime = DateTime.Now;
    }
}