枚举NAudio中的录制设备

问题描述:

如何获得使用NAudio的计算机上所有录制设备的列表?当你想记录时,你必须给它一个你想使用的设备的索引,但是没有办法知道它是什么设备。我希望能够从麦克风,立体声混音等中选择。枚举NAudio中的录制设备

对于WaveIn,您可以使用静态WaveIn.GetCapabilities方法。这会给你一个设备名称,但令人讨厌的限制是最多31个字符。我仍在寻找获取全名的方法(请参阅我的问题here)。

int waveInDevices = WaveIn.DeviceCount; 
for (int waveInDevice = 0; waveInDevice < waveInDevices; waveInDevice++) 
{ 
    WaveInCapabilities deviceInfo = WaveIn.GetCapabilities(waveInDevice); 
    Console.WriteLine("Device {0}: {1}, {2} channels", waveInDevice, deviceInfo.ProductName, deviceInfo.Channels); 
} 

对于WASAPI(Vista和以上),你可以使用MMDeviceEnumerator:

MMDeviceEnumerator enumerator = new MMDeviceEnumerator(); 
foreach (MMDevice device in enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.All)) 
{ 
    Console.WriteLine("{0}, {1}", device.FriendlyName, device.State); 
} 

我倾向于建议WaveIn,因为它是更广泛的支持,并允许在录制的采样率更大的灵活性。