【问题标题】:How to identify the default audio devices from a .Net application?如何从 .Net 应用程序中识别默认音频设备?
【发布时间】:2009-11-27 14:47:41
【问题描述】:

我有点困惑。是否有任何简单的方法可以在不使用 DirectX 的情况下在我的 VoIP .NET 应用程序中设置正确的音频设备(输入/输出)?

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

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

我认为 XP 和 Vista(7) 的解决方案可能不同。

提前谢谢你!

【问题讨论】:

  • 嗨拉撒路,谢谢你的回答。我使用开源 voip 库,然后使用 portaudio 来管理声音设备。所以我可以获得 Windows 中所有可用音频设备的列表。这就是我所拥有的。问题是,如何从列表中选择已经在系统中设置为默认的设备(输入/输出)。

标签: .net windows audio


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我最近不得不做一些类似的事情,但支持多个 Windows 版本。我最终使用了NAudio,因为它很简单。捆绑了几个示例应用程序,因此您可以了解如何使用它。

    【讨论】:

    • 谢谢您,您的解决方案在某些情况下也可以使用!
    猜你喜欢
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多