我正在使用代码从以下开源文章创建一个 C# DirectShow 推送源过滤器,它构建了一个名为VirtualCam的过滤器:
http://www.codeproject.com/Articles/437617/DirectShow-Virtual-Video-Capture-Source-Filter-in
GraphEdit实用程序可以找到它并将其显示在名为 CSharp Virtual Camera 的Video Capture Sources组中,我可以用它构建一个过滤器图,它工作正常。Skype 也可以找到它。但是,我想与它一起使用的所有其他软件都找不到它,因为当使用VideoInputSource作为主要组时,它不会出现在设备枚举调用中。我相信这是该组的类 ID:
/// <summary> CLSID_VideoInputDeviceCategory, video capture category </summary>
public static readonly Guid VideoInputDevice = new Guid(0x860BB310, 0x5D01, 0x11d0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86);
我从一个扫描视频输入设备的开源实用程序中获得了该类 ID。它也是找不到VirtualCam过滤器的应用程序之一。这些应用程序只能找到像我的网络摄像头这样的设备(换句话说,VirtualCam 不会出现在可用设备列表中)。
我需要对VirtualCam源代码做什么,以便它声明/注册自己为视频输入设备,并显示在VideoInputDevice类别的设备枚举扫描中,以便大多数软件可以看到并使用它?
更新:在GraphEdit中仔细检查后,我发现大多数应用程序找不到的VirtualCam过滤器和可以找到的视频捕获设备之间的主要区别是VirtualCam过滤器没有定义任何引脚,而其他视频捕获设备可以。如果这是问题所在,我应该如何正确定义一个允许发现VirtualCam并正常工作以服务声明的接口的引脚?