Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DirectShowNET库仍然是获取所有连接的摄像机设备进行视频捕获的最佳方式吗?_C# - Fatal编程技术网

C# 使用DirectShowNET库仍然是获取所有连接的摄像机设备进行视频捕获的最佳方式吗?

C# 使用DirectShowNET库仍然是获取所有连接的摄像机设备进行视频捕获的最佳方式吗?,c#,C#,对于“如何获取用于捕获的所有摄像头(USB、IP、内置)的列表”问题的答案都指向。 然而,我能找到的所有这些条目()都有好几年的历史了,图书馆本身似乎有点旧。因此,我提出了一个相当简单的问题:现在使用WMI是一种更好、更方便的方法,还是这仍然是一种方法?在不同的论坛中搜索了这个主题后,我发现使用WMI是解决这个问题的最佳方法。 : // ///使用WMI获取所有可用的摄像头并将其添加到列表中 /// 私有void GetAvailableCameraList() { AvailableCame

对于“如何获取用于捕获的所有摄像头(USB、IP、内置)的列表”问题的答案都指向。
然而,我能找到的所有这些条目()都有好几年的历史了,图书馆本身似乎有点旧。因此,我提出了一个相当简单的问题:现在使用WMI是一种更好、更方便的方法,还是这仍然是一种方法?

在不同的论坛中搜索了这个主题后,我发现使用WMI是解决这个问题的最佳方法。 :

//
///使用WMI获取所有可用的摄像头并将其添加到列表中
/// 
私有void GetAvailableCameraList()
{
AvailableCameras=新列表();
string wmiQuery=string.Format(“从Win32\u pnpsignedriver中选择*);
ManagementObjectSearcher searcher=新的ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection retObjectCollection=searcher.Get();
foreach(retObjectCollection中的var WmiObject)
{
if(WmiObject[“DeviceClass”!=null&&WmiObject[“DeviceClass”].ToString().Equals(“IMAGE”))
{
Add(wmioobject[“DeviceName”].ToString());
}
}
}
    /// <summary>
    /// uses WMI to get all available cameras and add them to the list
    /// </summary>
    private void GetAvailableCameraList()
    {
        AvailableCameras = new List<string>();
        string wmiQuery = string.Format("SELECT * FROM Win32_PnPSignedDriver");

        ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
        ManagementObjectCollection retObjectCollection = searcher.Get();

        foreach (var WmiObject in retObjectCollection)
        {
                if (WmiObject["DeviceClass"] != null && WmiObject["DeviceClass"].ToString().Equals("IMAGE"))
                {
                    AvailableCameras.Add(WmiObject["DeviceName"].ToString());
                }
        }
    }