C# NAudio 获取麦克风信息,解决设备名称显示不全的问题

方法一:WaveInCapabilities GetCapabilities(int devNumber)

该方法返回系统中可用的Wave-In设备

直观的表示,即返回系统中的麦克风设备,通过 WaveInCapabilities.ProductName 可查看到对应设备的名称

List devices = new List();
// 返回系统中可用的Wave-In设备数
int waveInDevices = WaveIn.DeviceCount;
for (int i = 0; i < waveInDevices; i++)
{
    devices.Add(WaveIn.GetCapabilities(i));
}

结果如图:该方法的结果有个问题就是,返回的麦克风名称显示不全,原因是,该方法底层调用window的api返回字符串的长度限制。

C# NAudio 获取麦克风信息,解决设备名称显示不全的问题_第1张图片

方法二:MMDeviceEnumerator

通过MMDeviceEnumerator类的方法发去获取系统设备集合,再经过筛选,提取到完整的设备名称

该方法查找自:https://stackoverflow.com/questions/1449162/get-the-full-name-of-a-wavein-device

using NAudio.CoreAudioApi;

List devs = new List();

MMDeviceEnumerator enumberator = new MMDeviceEnumerator();
MMDeviceCollection deviceCollection = enumberator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All);
for (int waveInDevice = 0; waveInDevice < WaveIn.DeviceCount; waveInDevice++)
{
    WaveInCapabilities deviceInfo = WaveIn.GetCapabilities(waveInDevice);
    foreach (MMDevice device in deviceCollection)
    {
        if (device.FriendlyName.StartsWith(deviceInfo.ProductName))
        {
            devs.Add(device.FriendlyName);
            break;
        }
    }
}

结果如图:

C# NAudio 获取麦克风信息,解决设备名称显示不全的问题_第2张图片

你可能感兴趣的:(C#)