[英]Get default output audio device with NAudio
我想使用NAudio獲取默認的輸出音頻設備(即我的揚聲器),以獲取此問題中的主音量。
我正在嘗試使用MMDeviceEnumerator.GetDevice()
,但是它使用的ID是一個字符串,而不是設備號。 這是我到目前為止編寫的代碼:
var enumerator = new MMDeviceEnumerator();
for (int i = 0; i < WaveOut.DeviceCount; i++)
{
var cap = WaveOut.GetCapabilities(i);
Console.WriteLine("{0}: {1}", i, cap.ProductName);
var device = enumerator.GetDevice(???);
}
Console.WriteLine();
Console.ReadLine();
我嘗試過將各種Guid從功能以及字符串格式的設備ID傳遞到GetDevice()
但是它們都不起作用。
如何獲得默認設備?
您在這里混合了兩種完全不同的音頻API。 MMDeviceEnumerator是WASAPI(WindowsVista中引入的新音頻API)的一部分,WaveOut.DeviceCount使用舊的Windows音頻API。
要使用WASAPI獲取默認音頻設備,請使用如下代碼:
var enumerator = new MMDeviceEnumerator();
enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Console);
實際上,根據目的(角色)有三種不同類型的默認音頻輸出設備:
/// <summary>
/// Games, system notification sounds, and voice commands.
/// </summary>
Console,
/// <summary>
/// Music, movies, narration, and live music recording
/// </summary>
Multimedia,
/// <summary>
/// Voice communications (talking to another person).
/// </summary>
Communications,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.