2009-09-19 9 views
4

Comment obtenir une liste de tous les périphériques d'enregistrement sur un ordinateur à l'aide de NAudio? Quand vous voulez enregistrer, vous devez lui donner l'index de l'appareil que vous voulez utiliser, mais il n'y a aucun moyen de savoir de quel périphérique il s'agit. J'aimerais pouvoir sélectionner parmi Mic, Stereo Mix, etc.Énumérer les périphériques d'enregistrement dans NAudio

Répondre

15

Pour WaveIn, vous pouvez utiliser la méthode statique WaveIn.GetCapabilities. Cela vous donnera un nom de périphérique, mais avec la limite ennuyeuse qu'il est un maximum de 31 caractères. Je cherche toujours le moyen d'obtenir le nom complet (voir ma question 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); 
} 

Pour WASAPI (Vista et ci-dessus), vous pouvez utiliser le MMDeviceEnumerator:

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

J'ai tendance à recommander WaveIn, car il est plus largement pris en charge, et permet une plus grande flexibilité sur les taux d'échantillonnage d'enregistrement.

Questions connexes