Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测音频和视频输入设备并获取其状态(C#Windows服务)_C#_.net_Windows Services - Fatal编程技术网

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

检测音频和视频输入设备并获取其状态(C#Windows服务),c#,.net,windows-services,C#,.net,Windows Services,我需要在系统中获取音频和视频输入设备,并获取其状态 我是这样做的,使用的是DirectShow public class DeviceMonitoringService { public static DsDevice[] DetectMicrophone() { var audioDevices = DsDevice.GetDevicesOfCat(FilterCategory.AudioInputDevice); return audioDev

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

我是这样做的,使用的是
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;
    }
}
但是这种方法不会返回设备的状态


如何获取状态?

因此,对于音频输入,我可以使用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();
    }
公共静态列表GetAudioInputDevices() { var枚举器=新的MMDeviceEnumerator(); var devicesAudio=enumerator.EnumerateAudioEndPoints(DataFlow.Capture,DeviceState.All); 返回设备音频。选择(设备=>new InputDevice() {DeviceId=device.ID,Name=device.DeviceFriendlyName,Status=device.State.ToString()}).ToList(); }
因此对于音频输入,我可以使用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();
    }
公共静态列表GetAudioInputDevices() { var枚举器=新的MMDeviceEnumerator(); var devicesAudio=enumerator.EnumerateAudioEndPoints(DataFlow.Capture,DeviceState.All); 返回设备音频。选择(设备=>new InputDevice() {DeviceId=device.ID,Name=device.DeviceFriendlyName,Status=device.State.ToString()}).ToList(); }