检测音频和视频输入设备并获取其状态(C# Windows 服务)



我需要在系统中获取音频和视频输入设备并获取其状态。

我这样做是用DirectShow

public class DeviceMonitoringService
{
public static DsDevice[] DetectMicrophone()
{
var audioDevices = DsDevice.GetDevicesOfCat(FilterCategory.AudioInputDevice);
return audioDevices;
}
public static DsDevice[] DetectCamera()
{
var videoDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
return videoDevices;
}
}

但此方法不会返回设备的状态。

如何获取状态?

所以对于音频输入,我可以使用 NAudio nuget

并像这样检测所有输入

public static List<InputDevice> GetAudioInputDevices()
{
var enumerator = new MMDeviceEnumerator();
var devicesAudio = enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All);
return devicesAudio.Select(device => new InputDevice()
{DeviceId = device.ID, Name = device.DeviceFriendlyName, Status = device.State.ToString()}).ToList();
}

最新更新