【发布时间】:2015-07-23 21:35:14
【问题描述】:
我正在使用以下开源文章中的代码创建一个 C# DirectShow 推送源过滤器,它构建了一个名为 VirtualCam 的过滤器:
http://www.codeproject.com/Articles/437617/DirectShow-Virtual-Video-Capture-Source-Filter-in
GraphEdit 实用程序可以找到它并将其显示在 Video Capture Sources 组中,名称为 CSharp Virtual Camera,我可以构建一个带有它的过滤器图,效果很好。 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 中的设备枚举扫描中strong> 类别,所以大多数软件都可以看到并使用它?
更新:在 GraphEdit 中仔细检查后,我发现大多数应用无法找到的 VirtualCam 过滤器和可以找到的视频捕获设备是 VirtualCam 过滤器没有定义任何引脚,而其他视频捕获设备有。如果这是问题所在,我应该如何正确定义一个引脚以允许 VirtualCam 被发现并正常工作以服务声明的接口?
【问题讨论】:
-
您希望它显示在什么应用程序中。也许这个应用程序使用 MediaFoundation 作为 Videobackend!然后 DirectShow 过滤器不起作用。
标签: c# directx directshow video-codecs