我正在使用NAudio
在我的WinForms应用中播放mp3文件。但是,文件需要播放到用户选择的设备,而不是Windows默认设备。所以,我现在正在做的是使用以下代码加载所有可用的设备:
{
ManagementObjectSearcher mo =
new ManagementObjectSearcher("select * from Win32_SoundDevice");
foreach (ManagementObject soundDevice in mo.Get())
{
String name = soundDevice.GetPropertyValue("Name").ToString();
comboBox1.Items.Add(name);
}
}
现在,NAudio需要一些设备ID来更改活动设备。如何使用comboBox中的输入(设备名称)获取此ID?
答案 0 :(得分:2)
如果您正在使用NAudio和WaveOut,您可以获得如下设备名称:
for (int deviceId = 0; deviceId < WaveOut.DeviceCount; deviceId++)
{
var capabilities = WaveOut.GetCapabilities(deviceId);
comboBoxWaveOutDevice.Items.Add(capabilities.ProductName);
}
唯一需要注意的是,旧的waveOut API不允许使用超过31个字符的产品名称,因此它们可能会被截断。如果这对您来说是一个问题,那么DirectSoundOut或WasapiOut可能是一个不错的选择。