修复由于流控导致的帧率降低,由于摄像头过来的帧不是平均的 40ms 一帧,所以需要容错
This commit is contained in:
@@ -114,6 +114,9 @@ public abstract class BaseVideoSource : IVideoSource, IAsyncDisposable
|
||||
/// <summary> 上次 FPS 计算的 Tick 时间 </summary>
|
||||
private long _lastFpsCalcTick = 0;
|
||||
|
||||
// 提供一个最近一秒的输入帧率参考值
|
||||
public int NominalInputFps => (int)Math.Round(RealFps);
|
||||
|
||||
/// <summary> 实时 FPS(每秒更新一次) </summary>
|
||||
public double RealFps { get; private set; } = 0.0;
|
||||
|
||||
|
||||
@@ -297,7 +297,8 @@ public class HikVideoSource : BaseVideoSource
|
||||
{
|
||||
// 1. [核心流控] 询问基类控制器:这帧要不要?
|
||||
// 之前失效是因为操作的是子类被遮蔽的 Controller,现在复用基类 Controller,逻辑就通了。
|
||||
var decision = Controller.MakeDecision(Environment.TickCount64);
|
||||
// 传入真实的输入帧率作为参考基准
|
||||
var decision = Controller.MakeDecision(Environment.TickCount64, (int)RealFps);
|
||||
|
||||
// 如果没人要,直接丢弃,不进行 Mat 转换,节省 CPU
|
||||
if (!decision.IsCaptured) return;
|
||||
|
||||
Reference in New Issue
Block a user