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

问题描述 投票:0回答:1

我正在使用NAudio库来测试基于Win的PC上的音频输出设备。现在,当我启动应用程序时,一切都很好,直到我添加或删除新的音频设备--例如将耳机插入耳机音频插孔。var devs = NAudio.Wave.DirectSoundOut.Devices 我看了一下设备的名字,确定它的索引--在 "设备 "列表中。IEnumerable devs 但当我设置了所需的设备号,

_nAudioSoundOut = new NAudio.Wave.WaveOut() { DeviceNumber = wantedDeviceIndex};  

然后启动并播放:

_nAudioSoundOut.Init(_mp3Reader);    
_nAudioSoundOut.Play();

然后一些设备似乎被混淆了(交换).是我遗漏了什么,做错了什么,还是我发现了一个错误?

是的,我确保,我索引适当的设备由它的名字,是的,我没有考虑-1的索引,因为-1st是默认的Windows设备,在列表中的第一个实际上是0。

谢谢你!

c# .net windows audio naudio
1个回答
0
投票

问题是,我使用的是静态设备列表。devs = NAudio.Wave.DirectSoundOut.Devices的顺序与NAudio.Wave.WaveOut中的设备不一致。因此,我不得不这样做来解决这个问题。

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;
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.