Question

How can I get a list all of camera devices attached to my PC using USB (WebCams) but also the build in camera that the laptops have.

Was it helpful?

Solution 2

I've done this before - use http://directshownet.sourceforge.net/ to give you a decent .net interface to DirectShow, then you can just use the following code:

  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...
  }

OTHER TIPS

A simple solution without any external library is to use WMI.

Add using System.Management; and then:

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;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top