.net 如何获取可用视频捕获设备的列表

kmbjn2e3  于 2023-04-08  发布在  .NET
关注(0)|答案(3)|浏览(217)

我创建一个项目使用DirectShow.Net显示一个预览的网络摄像头视图在一个窗口形式使用Visual C#。
我想从获得可用的视频设备的集合开始,这样我就可以在内置网络摄像头或USB网络摄像头之间进行选择。
我已经看到了几个用C完成的例子,例如在msdn“http://msdn.microsoft.com/en-us/library/windows/desktop/dd377566(v=vs.85).aspx”上。
然而,由于我不知道任何C
,我不知道如何将这些代码转换为C#。

dluptydi

dluptydi1#

DirectShow.NET示例\Samples\Capture\DxLogo\Capture.cs展示了如何做到这一点:

// Get the collection of video devices
capDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);

你需要的关键字是FilterCategory.VideoInputDevice
参见:

z18hc3ub

z18hc3ub2#

.netcore解决方案:安装软件包:DirectShowLib.Standard
然后你可以得到相机列表:

var devices = new List<DsDevice>(DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice));
var cameraNames = new List<string>();
foreach (var device in devices)
{
    cameraNames.Add(device.Name);
}
v09wglhw

v09wglhw3#

我也遇到了同样的问题。经常建议的请求Windows Media Foundation或Directshow API的方法对我来说是不够的。但幸运的是,我找到了这个solution by Michaël Hompus。用法如下:

using var sde = new Hompus.VideoInputDevices.SystemDeviceEnumerator();

foreach (var device in sde.ListVideoInputDevice())
{
    yield return new Webcam
    {
        Name = device.Value,
        Index = device.Key,
    };
}

相应的GitHub存储库可以找到here

相关问题