如何在C#中捕获实时视频时保持稳定的每秒帧数

时间:2013-08-15 00:15:20

标签: c# video-capture

我编写了一个C#程序,通过相机制造商专有的API从专业相机中捕获视频。我能够通过FileStream对象将捕获的帧写入磁盘,但是当涉及到帧速率时,我受到摄像头和磁盘I / O的支配。

确保以所需的帧速率写入磁盘的最佳方法是什么?是否有某种算法可用于计算实时平均帧率,然后添加/丢弃帧以保持某个所需的帧速率?

1 个答案:

答案 0 :(得分:0)

由于缺乏信息,很难说清楚。

格式是什么?有压缩吗?

相机API如何发送帧?他们是时间,所以相机会 发送你要求的帧率?如果是,那么你真的在处理I / O速度。

如果你需要高质量,而且没有压缩,你可以尝试一些 无损压缩算法,以平衡处理和驱动I / O.你可以得到 如果驱动器I / O的瓶颈很高,那么速度很快。

对于框架,有一些方法可以实现它。通常情况下帧具有时间戳,您应该搜索它,并丢弃彼此接近的帧。 假设你想要60 fps,所以帧之间的ms间距为1000/60 = 16ms,如果你得到的帧有一个时间戳,可以说是最后一帧后的13ms,你可以丢弃它而不写入磁盘

相关问题