如何从 .Net 应用程序中识别默认音频设备?

Posted

技术标签:

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

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

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

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

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

提前谢谢你!

【问题讨论】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

谢谢您,您的解决方案在某些情况下也可以使用!

以上是关于如何从 .Net 应用程序中识别默认音频设备?的主要内容,如果未能解决你的问题,请参考以下文章

推荐的在 .NET 应用程序中使用音频的方法?

如何使用 Auriotouch 将麦克风的音频输入静音并仅识别设备的内部音频

如何使用默认输出设备作为使用 AudioGraph 录制音频的源?

如何在 swift 中使用 cocoahttpserver 流式传输音频(设备歌曲)?

捕获从端口音频写入输出音频设备的音频输出

如何从应用程序中识别企业(企业)iOS 设备?