2009-11-27 109 views
0

我有点困惑。有没有简单的方法来在我的VoIP .NET应用程序中使用DirectX来设置正确的音频设备(输入/输出)?如何识别.Net应用程序中的默认音频设备?

“正确的音频设备”可能意味着 - 已在Windows中设置为DEFAULT的设备。

E.g. Skype(或X-Lite)可以在大多数情况下正确选择音频设备。但是如何?只是获得设备列表并不能解决问题,因为我不知道如何选择合适的设备。

我想XP和Vista(7)的解决方案可能会有所不同。

预先感谢您!

+0

嗨拉撒路,谢谢你的回答。 我使用开放源码的voip库,它在'使用portaudio来管理声音设备。所以我可以得到Windows中可用的所有音频设备的列表。这就是我所拥有的。 问题是,如何从列表中选择已在系统中设置为DEFAULT的设备(进/出)。 – 2009-11-27 15:13:59

回答

1

在Vista和Win7上,您可以使用MMDevice API IMMDeviceEnumerator :: GetDefaultAudioEndpoint,然后使用MMDevice :: GetId获取描述此设备的字符串。

在其他系统(包括Vista和Win7)上,您可以使用较旧的MME API waveInGetDevCaps和waveOutGetDevCaps,使用deviceID = WAVE_MAPPER(-1)来获取描述默认设备的字符串。

+0

是的,就是这样!谢谢! – 2009-11-28 16:55:01

0

我最近不得不做类似的事情,但支持多个Windows版本。由于其简单性,我最终使用了NAudio。有几个示例应用程序捆绑在一起,所以你可以看到如何使用它。

+0

谢谢,您的解决方案也可以在某些情况下使用! – 2009-11-28 16:54:27

相关问题