是否可以在不使用 TSysDevEnum.GetMoniker(...) 的情况下创建/初始化具有已知视频捕获源的 TFilter 对象?
Video Capture Source 的名称和其他详细信息是已知的,可以通过 GraphEdit Filter Browser 获取。目的是加快 TFilter 的初始化并以编程方式将其附加到 FilterGraph。
是否可以在不使用 TSysDevEnum.GetMoniker(...) 的情况下创建/初始化具有已知视频捕获源的 TFilter 对象?
Video Capture Source 的名称和其他详细信息是已知的,可以通过 GraphEdit Filter Browser 获取。目的是加快 TFilter 的初始化并以编程方式将其附加到 FilterGraph。
不,您需要通过 moniker 来完成。它取决于支持视频源过滤器的实际 COM 类,但几乎总是没有唯一的CLSID
,并且不可能不通过名字对象来实例化它。
如果您有 moniker 显示名称,您可以使用MkParseDisplayName
绕过枚举快速获取 IMoniker。或者,您可以列举并将名字对象的显示名称与您已经拥有的名称进行比较。
要选择音频或视频捕获设备,请使用系统设备枚举器,如主题使用系统设备枚举器中所述。System Device Enumerator 返回设备名字对象的集合,按设备类别选择。名字对象是一个 COM 对象,其中包含有关另一个对象的信息。名字对象使应用程序无需实际创建对象即可获取有关对象的信息。