Как я могу получить список устройств камеры с моего компьютера 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);
    }
Другие вопросы по тегам