DirectShow在Windows上的video捕获的替代品

我正在更新目前使用DirectShow进行video捕获的程序。 虽然DirectShow似乎工作得很好,但我想知道是否还有其他function强大的或最新的SDK或API。 一些有用的function将是:

  1. 在捕捉期间提供一致的帧速率(在NTSC之间为33ms)。
  2. 使用DirectShow兼容的捕获设备。
  3. 不需要在客户的PC上安装额外的许可证。
  4. 允许同时预览和硬件编码的video。
  5. 能够被集成到一个C ++ / MFC应用程序中。

我已经研究过LeadTools多媒体捕获SDK和VisioForge Capture SDK以及微软媒体基金会 ,但是只是想知道其他人已经成功地使用了什么,然后才投入时间或资金到其中一个替代scheme中。 我不在乎这是一个商业还是开源的产品。

编辑:虽然我很欣赏解决我的特定问题的尝试,但这个问题应该是关于DirectShow的替代scheme。 所以,我删除了所有对我的具体问题的引用。 解决这个问题需要等待另一个问题。

相当所有的捕获板都有自己的定时器。

您可能会尝试查询IReferenceClock源代码筛选器,并使用自己的计时器,该计时器通常比PC的计时器更精确。

如果使用ISampleGrabber那么从Sample Grabber输入引脚上调用Receive的那一刻起,回调函数就被称为微秒 ,它们在源代码中只有几行。

看起来你的帧源定时是不准确的(不是在IMediaSample设置的定时,而是交付帧的时间)。

生成帧的源过滤器是什么?

DirectShow API非常好,我从来没有在Windows平台上找到更好的。 DirectShow已被媒体基金会取代, 媒体基金会是Vista(及更高版本)操作系统。

我们将不得不等待XP死亡,然后人们才会开始使用Media Foundation进行大规模开发。

请问您为什么要寻求一种替代DirectShow的方法 – 这是一个非常好的支持API – 在MSDN上有很好的文档记录,在MSDN上有一个非常活跃和友好的论坛 ,用于DirectShow开发。

问题可能只是您正在使用的计时方法。 您是否使用高性能计时器API ?

VideoLan可能是您的一个选择。

LeadTools和VisioForge SDK只是DirectShow的包装器+一些自定义的过滤器! DirectShow没有真正的替代Windows PC上的捕获。 也许在Win8与MediaFoundation? 一些硬件厂商有自己的捕获程序,但其中大多数只是使用DirectShow。

我认为你的问题不是DirectShow。 您的回拨工作有多久? 因为如果你对图像做一些分析,那么你需要快速的做这个。 不是你的回调时间是重要的,但在介质样本你的演示时间! 这应该是预览示例+ 33ms。

FFmpeg可以接收directshow的输入和操作,而且是免费的。 AviSynth也许也是…