如何获取avicap32.dll中已连接的WebCams列表?

时间:2012-10-24 21:36:52

标签: c# .net winapi webcam

我正在编写一个处理WebCams的应用程序。我必须使用(这是一个外部约束)avicap32.dll库。所以我在这里,使用一些extern函数(我必须编组类型)来自这个库,以及user32(发送WindowsMessages)。我挖了一半的互联网,但未能找到如何获得所有连接的WebCam设备的列表?

当然我完全了​​解功能:

[DllImport(avicap32dll)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool capGetDriverDescription(
    short driverIndex,
    StringBuilder name, int nameSize,
    StringBuilder version, int versionSize);

,但它列出了驱动程序,而不是 cams !当我将两台摄像机连接到PC时,我仍然可以通过此功能找到一个捕获驱动程序(检查driverIndex从0到9)。它们都必须使用相同的捕获驱动程序。所以,没有我无法确定的WebCams列表,我想要连接哪一个。有一个WindowsMessage WM_CAP_DLG_VIDEOSOURCE,但在连接WebCam之前它没有显示视频源对话框。

2 个答案:

答案 0 :(得分:3)

这是传统的API(适用于Windows的视频,avicap32.dll),它并不像您期望的那样灵活。仍然得到支持。

具有最佳覆盖范围的较新API是DirectShow,它是原生的,但使用DirectShow.NET,您可以与.NET建立桥梁。看看生成此方法的代码示例和文章:Finding Your Web Cam with C# & DirectShow.NET

修改:原始文章不再存在,但在互联网档案https://archive.org/web/

中找到了副本

答案 1 :(得分:1)

使用AForge.NET库更容易也更好。它包含执行这些工作的所有工具http://aforgenet.com/