【问题标题】:How to get list of connected WebCams in avicap32.dll?如何获取 avicap32.dll 中连接的网络摄像头列表?
【发布时间】:2012-10-15 00:30:29
【问题描述】:

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

当然我对功能了如指掌:

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

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

【问题讨论】:

  • 使用较新的 API,VFW 实在是太老了,一点都不灵活。
  • 不幸的是,我绑定到 avicap32.dll 。这是在大学上课的,而且...你知道的。它只是必须是这个dll。为什么?因为。
  • 这就是你所拥有的一切。该 API 来自视频捕获设备是高端硬件的时候。您可以枚举驱动程序 0 到 9,并且可能会有针对特定索引的响应。
  • 是的。我正在检查所有这 10 个索引,发现只有一个驱动程序,即使 USB 中有 2 个凸轮。这不好。即使,您能否指出一些特定的 API,它应该可以工作?我是说,我已经(虽然我们不能……)改用 WIA2,但我们的摄像头似乎与 WIA2 不兼容。

标签: c# .net winapi webcam


【解决方案1】:

这是旧版 API(适用于 Windows 的视频,avicap32.dll),并没有您想象的那么灵活。不过仍然受到支持。

具有最佳覆盖率的较新 API 是 DirectShow,它是原生的,但使用 DirectShow.NET,您可以连接到 .NET。看看介绍这种方法的代码示例和文章:Finding Your Web Cam with C# & DirectShow.NET

编辑:原始文章已不存在,但在 Internet 档案库中找到了副本https://archive.org/web/

【讨论】:

  • 谢谢。它对我也有帮助,我一直在使用 avicap32.dll,但它从来没有真正做到我想要的。
【解决方案2】:

使用 AForge.NET 库更容易更好。它包含完成此类工作的所有工具http://aforgenet.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多