提问者:小点点

添加/删除声音设备后,如何在NAudio中选择正确的声音输出设备?


我正在使用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。

谢谢你!


共1个答案

匿名用户

问题是,我使用了静态设备列表。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;
        }
    }