簡體   English   中英

使用NAudio獲取默認的輸出音頻設備

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM