首页 > 解决方案 > 检测音频和视频输入设备并获取其状态(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;
    }
}

但是这种方法不会返回设备的状态。

我怎样才能获得状态?

标签: c#.netwindows-services

解决方案


所以对于音频输入,我可以使用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();
    }

推荐阅读