1

目前我正在开发一个 DirectShow 应用程序来帮助用户配置他们的电视采集卡。此配置稍后将在另一个程序中使用。

我使用ICaptureGraphBuilder2::RenderStream方法来渲染视频和音频。我的图表的来源取决于用户选择的设备,但这主要是WDM Video Capture Filter类别中的设备。

这是我的问题。有些设备无法工作,因为它们需要的不仅仅是源过滤器。例如,我有一个网络摄像头,它有一个单独的音频过滤器。另一个例子,我有一个电视调谐器卡,它有自己的编码器/复用器。

由于我的应用程序应该与那里的大多数捕获设备一起使用,是否有一种通用的方法来检测源过滤器旁边是否存在图表工作所需的其他过滤器?

我可以枚举所有过滤器并检查它们的名称是否彼此相似,但名称不能被信任......

4

1 回答 1

0

DirectShow 作为一个框架基本上是一套灵活的 DIY 过滤器。您有一组分散的它们,并且它们(一些)也被分类,在枚举一个类别时,您可能会对包含的特征集做出一些假设。

特别是,视频和音频(以及其他媒体类型)源之间没有直接对应关系。您可以做的是提示用户选择设备(例如应用程序配置的一部分)并假设它们是相关的并发送同步的内容(如果适用)。

另一个常见任务是连接交叉开关,您可能对使用电视调谐器感兴趣。Capture Graph Builder 对象中有一个帮助器,您可以利用它。请参阅ICaptureGraphBuilder2::FindInterface中的“支持过滤器”备注。

于 2012-11-18T12:18:57.463 回答