我需要在系统中获取音频和视频输入设备并获取其状态。
我这样做是用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();
}