如何获取声音输出设备 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?

如何获取声音输出设备 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可能是一个不错的选择。