c# - 检测音频和视频输入设备并获取其状态(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();
}
推荐阅读
- c# - DataGrid内的矩形,绑定矩形的宽度值
- python - PyInstaller --noconsole 在运行应用程序后仍然显示控制台
- crosstab - 如何在 Access 中筛选交叉表查询?
- google-cloud-run - Cloud Run:自定义域的真实体验和延迟问题
- tsql - 如何在 TSQL 中将带前导零的字符串格式化为小数?
- vb.net - 数据库锁定 SQLcommand.ExecuteNonQuery() 抛出异常
- email - 为什么 Outlook 邮件中缺少“已接收”标题字段?
- javascript - 创建自定义显示布局组件
- r - 嗨,我正在尝试在 R 中创建一个对象,然后对数据进行子集化,但收到有关尺寸的错误消息
- javascript - 有没有办法在构建时间之前将反应组件编译为 html?