如何获取声音输出设备 ID
本文关键字:声音输出设备 ID 获取 何获取 | 更新日期: 2023-09-27 18:32:16
我正在使用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 来更改活动设备。如何使用组合框(设备名称)的输入获取此 ID?
如果您使用的是 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可能是一个不错的选择。