【发布时间】:2014-07-15 09:41:19
【问题描述】:
我正在尝试调试使用 DirectShow.NET 从 USB 摄像头流式传输帧时遇到的延迟问题。
我正在使用 SampleGrabber 捕获帧并对它们进行一些算法处理。 SampleGrabber 在 MJPEG 解码器之后连接,因此帧被解码,流配置为 30 FPS。 我看到的问题是当我的算法处理一帧的时间超过 33 毫秒时。在这种情况下,我看到了延迟效应——帧没有丢失,帧速率没有降低,只是迟到了。这表明设备驱动程序内部存在某种缓冲机制(通用 USB 摄像头 = 通用 DirectShow?),具有大量缓冲区,大约 16 个。
问题是,有人能解释一下这个问题,或许可以提出一种方法来设置设备中的缓冲区数量吗? 我发现接口IMemAllocator 允许通过成员方法更改缓冲区的数量:IMemAllocator::SetProperties,但是在 DirectShow.NET 中这是如何完成的呢?有人有这方面的经验吗?
【问题讨论】:
标签: video camera directshow video-capture directshow.net