2

directshow.net 示例文件夹(标记为“2010-February”)中的每个示例都可以正常编译,并且从文件中播放视频的示例效果很好。但是,每个尝试枚举 FilterCategory.VideoInputDevices 的示例总是找不到我的任何过滤器,特别是DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); 总是返回我没有设备。在使用 directshow.net 的每个其他程序中,我都会遇到同样的问题,例如 touchless 和 codeplex 上的各种示例。

我安装了四个视频输入过滤器(1 个网络摄像头和 3 个屏幕捕获过滤器),Windows SDK 和 rl 过滤器管理器附带的图形编辑器可以找到/使用它们。这两个程序都在“视频捕获源”下列出了四个过滤器,每个 Moniker 都以 directshow.net 的 FilterCategory.VideoInputDevices 指向的正确 GUID 开头(“860BB310-5D01-11D0-BD3B-00A0C911CE86”)。

我已经尝试自己编译和使用最新的 directshow.net dll,但没有任何改变。

包装器可以使视频渲染过滤器正常但不能枚举视频捕获过滤器是否有某些原因?我在win7 sp1,64位,使用visual C# 2010 express。我的环境中有什么导致这种情况吗?如果我知道是什么原因造成的,我很乐意自己处理更改。

感谢您的时间。

4

1 回答 1

0

我将 GetDevicesOfCat 的代码复制到我的项目中并开始调试它。如果我将除 VideoInputDevice 之外的任何 FilterCategory 交给它,它将获得 GraphEdit 列出的大部分过滤器,但在大多数类别中仍然缺少一些。我猜想过滤器的某些属性使我的 GetDevicesOfCat 编译版本无法获得它们。

事实证明,只需将我的平台目标切换到 x86 就可以了,尽管它在 VS2010 Express 中并不那么简单(对于全新安装,您必须在执行第一个答案之前遵循第二个答案): Change target CPU settings in Visual工作室 2010 快递

该程序现在成功地枚举了我所有的过滤器。

于 2011-07-12T13:26:18.487 回答