Как я могу получить список устройств камеры с моего компьютера C#
Как я могу получить список всех устройств камеры, подключенных к моему ПК с помощью USB (веб-камеры), а также встроенной камеры, которую имеют ноутбуки.
3 ответа
Решение
Я делал это раньше - используйте http://directshownet.sourceforge.net/ чтобы дать вам достойный.net интерфейс для DirectShow, тогда вы можете просто использовать следующий код:
DsDevice[] captureDevices;
// Get the set of directshow devices that are video inputs.
captureDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
for (int idx = 0; idx < captureDevices.Length; idx++)
{
// Do something with the device here...
}
Простое решение без какой-либо внешней библиотеки - использовать WMI
.
добавлять using System.Management;
а потом:
public static List<string> GetAllConnectedCameras()
{
var cameraNames = new List<string>();
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE (PNPClass = 'Image' OR PNPClass = 'Camera')"))
{
foreach (var device in searcher.Get())
{
cameraNames.Add(device["Caption"].ToString());
}
}
return cameraNames;
}
Надеюсь, это поможет другим пользователям
//using System.Management;
public void GetCameras()
{
List<string> cameras = new List<string>();
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE (PNPClass = 'Image' OR PNPClass = 'Camera')");
foreach (var device in searcher.Get())
{
cameras.Add($"Device: {device["PNPClass"]} / {device["Caption"]} / {device["Description"]} / {device["Manufacturer"]}");
}
File.WriteAllLines(@"C:\out\cameras.txt", cameras);
}