ISampleGrabberCB::SampleCB 时间戳

ISampleGrabberCB::SampleCB timestamp

我正在尝试使用 DirectShow 和 ISampleGrabber 界面从网络摄像头捕获视频流。我想为每个抓取的帧获取时间戳。但是 SampleCB(double SampleTime, IMediaSample *pSample) 方法中的 SampleTime 参数始终为零。

为什么可以为零?这个值是否取决于相机驱动程序的实现或其他? 还有其他方法可以获取抓取帧的时间戳吗?

如果您从预览 pin 捕捉,或通过 Smart Tee 过滤器预览从相机导出的航段,时间戳可能为零。时间戳不为零,帧根本没有时间戳,Sample Grabber 过滤器无法区分这两种情况。

您可以使用 GraphStudioNext's Analyzer Filter, or using DumpMediaSamples 轻松验证时间戳。

在您的应用程序中,您首先对图形的确切拓扑感兴趣,哪些过滤器连接到 Sample Grabber 的上游。您很可能需要更新代码以取消使用预览。