Для WaveIn вы можете использовать статический метод WaveIn.GetCapabilities. Это даст вам имя устройства, но с досадным ограничением, что это максимум 31 символ. Я все еще ищу способ получить полное имя (см. Мой вопрос здесь ).
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, так как он более широко поддерживается и обеспечивает большую гибкость по сравнению с частотой записи.