如何从 .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 应用程序中识别默认音频设备?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Auriotouch 将麦克风的音频输入静音并仅识别设备的内部音频
如何使用默认输出设备作为使用 AudioGraph 录制音频的源?