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