[英]How to get list of connected WebCams in avicap32.dll?
我正在編寫一個處理WebCams的應用程序。 我必須使用avicap32.dll庫(這是一個外部約束)。 因此,在這里,我使用了該庫中的一些extern函數(必須為它們編組類型)以及user32(發送WindowsMessages)。 我挖了一半的Internet,但是找不到如何獲取所有已連接的WebCam設備的列表?
當然我完全了解功能:
[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)。 他們兩個都必須使用相同的捕獲驅動程序。 因此,沒有我無法真正決定要連接的WebCam的列表。 有WindowsMessage WM_CAP_DLG_VIDEOSOURCE,但在連接WebCam之前它不顯示視頻源對話框。
這是舊版API(適用於Windows的視頻,avicap32.dll),不像您期望的那樣靈活。 仍然受到支持。
覆蓋范圍最廣的較新API是DirectShow,它是本機的,但有了DirectShow.NET,您就可以連接到.NET。 看一下代碼示例和介紹這種方法的文章: 使用C#和DirectShow.NET查找網絡攝像頭
編輯:原始文章不再存在,但是在Internet存檔https://archive.org/web/中找到了一個副本
使用AForge.NET庫更容易,更好。 它包含完成這些工作的所有工具http://aforgenet.com/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.