我正在使用NAudio库在基于Win的PC上测试音频输出设备。现在,当我启动应用程序时,一切都很好,直到我添加或删除新的音频设备——例如将耳机粘在耳机音频插孔上。从这一刻起,设备的静态列表:var devs=NAudio. Wave. DirectSoundOut. Devices
得到更新。我查看设备名称,确定其索引-在IENumable devs
中,但当我设置所需的设备编号时:
_nAudioSoundOut = new NAudio.Wave.WaveOut() { DeviceNumber = wantedDeviceIndex};
然后初始化并播放:
_nAudioSoundOut.Init(_mp3Reader);
_nAudioSoundOut.Play();
然后,一些设备似乎被混淆(交换)了。是我错过了什么,做错了什么,还是我发现了一个bug?
是的,我确保,我按名称索引正确的设备,是的,我确实考虑了索引的 -1,因为 -1st 是默认的 Windows 设备,列表中的第一个实际上是 0。
谢谢你!
问题是,我使用了静态设备列表。wave . directsoundout . devices ,它与NAudio中的设备不保持相同的顺序。挥手,挥手..奇怪又迷惑。因此,这是我必须要做的事情..
for (int idx = 0; idx < NAudio.Wave.WaveOut.DeviceCount; ++idx)
{
string devName = NAudio.Wave.WaveOut.GetCapabilities(idx).ProductName;
if (devName.Contains(SelectedSpeaker.DisplayName) || SelectedSpeaker.DisplayName.Contains(devName))
{
indexSelectedSpeaker = idx;
break;
}
}