需要使用第三方库来获取视频采集卡信息,常用的有DirectShow和FFmpeg。以下是使用DirectShow获取视频采集卡信息并显示到WinForm中的示例代码:

  1. 添加DirectShow库的引用

在Visual Studio中打开项目,右键单击项目,选择“添加引用”,在“COM”选项卡中选择“DirectShowLib”,点击“确定”按钮。

  1. 编写代码

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using DirectShowLib;

namespace VideoCaptureCardInfo { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

    private void Form1_Load(object sender, EventArgs e)
    {
        //获取视频采集设备列表
        List<string> deviceList = GetVideoCaptureDeviceList();
        //将设备列表显示到ListBox中
        foreach (string deviceName in deviceList)
        {
            listBox1.Items.Add(deviceName);
        }
    }

    private List<string> GetVideoCaptureDeviceList()
    {
        List<string> deviceList = new List<string>();
        //获取视频采集设备枚举器
        IEnumMoniker enumMoniker = null;
        Guid videoCaptureCategory = FilterCategory.VideoInputDevice;
        int hr = 0;
        hr = DsDevice.GetDevicesOfCat(videoCaptureCategory, out enumMoniker);
        if (hr != 0)
        {
            throw new Exception("Failed to get video capture devices");
        }
        //枚举每个视频采集设备
        IMoniker[] monikerArray = new IMoniker[1];
        while (enumMoniker.Next(1, monikerArray, IntPtr.Zero) == 0)
        {
            //获取设备名称
            IPropertyBag propertyBag = null;
            hr = monikerArray[0].BindToStorage(null, null, typeof(IPropertyBag).GUID, out object obj);
            if (hr != 0)
            {
                continue;
            }
            propertyBag = (IPropertyBag)obj;
            object deviceNameObject = null;
            hr = propertyBag.Read("FriendlyName", out deviceNameObject, null);
            if (hr != 0)
            {
                continue;
            }
            string deviceName = (string)deviceNameObject;
            deviceList.Add(deviceName);
        }
        return deviceList;
    }
}

}

  1. 运行程序

启动程序后,会获取视频采集设备列表并显示到ListBox中。

注意:如果程序无法获取到视频采集设备列表,可能是由于DirectShow库没有正确安装或者设备驱动程序没有正确安装

c# 获取视频采集卡信息并显示到winform中

原文地址: https://www.cveoy.top/t/topic/fjhl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录