4

我正在考虑更新当前使用 DirectShow 进行视频捕获的程序。虽然 DirectShow 似乎运行良好,但我想知道是否有任何更强大或最新的 SDK 或 API 值得我研究。一些有用的功能将是:

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

我研究了LeadTools Multimedia Capture SDKVisioForge Capture SDKMicrosoft Media Foundation,但只是想知道其他人成功使用了什么,然后再将时间或金钱投入这些替代方案之一。我不在乎这是商业产品还是开源产品。

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

4

6 回答 6

1

相当多的捕获板都带有自己的计时器。

您可以尝试查询您的源过滤器IReferenceClock并使用它自己的计时器,该计时器通常比 PC 的计时器更准确。

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

似乎您的帧源时序不准确(不是中设置的时序IMediaSample,而是传递帧的实际时序)。

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

于 2009-02-12T19:05:46.883 回答
1

DirectShow API 非常好,我在 windows 平台上从未发现过更好的。DirectShow 已被Media Foundation取代,后者仅是 Vista(及更高版本)操作系统。

在人们开始使用媒体基金会进行大规模开发之前,我们将不得不等待 XP 死去……

请问您为什么要寻找 DirectShow 的替代品 - 它是一个非常受支持的 API - 在 MSDN 上有很好的记录,并且在 MSDN 上有一个非常活跃和友好的 DirectShow 开发论坛。

于 2010-10-12T23:08:13.890 回答
0

VideoLan 可能是您的一个选择。

于 2009-02-13T21:19:30.657 回答
0

问题可能只是您用于计时的方法。你在使用高性能定时器 API吗?

于 2009-02-12T18:48:16.100 回答
0

FFmpeg 可以接收 directshow 输入并对其进行操作,而且它是免费的。AviSynth 也可能...

于 2012-10-17T16:22:10.710 回答
0

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

我认为你的问题不是 DirectShow。您的回调工作多长时间?因为如果您对图像进行一些分析,那么您需要快速执行此操作。重要的不是回调中的时间,而是您获得的 mediasample 中的演示时间!这应该是预览示例中的 +33ms。

于 2012-06-08T13:42:55.453 回答