C# NAudio獲取控制系統音量,可設定指定值和靜音設置


最近在搞警報系統,但是系統音量這一塊老是被安保人員給調成靜音,無奈之下,只好出此下策,找到控制系統音量的辦法,每次調用之前都先判斷是否打開了聲音,然后再去報警。

對於獲取音量的辦法,是用了一個開源工具NAudio,它可以滿足錄音、播放錄音、格式轉換、混音調整等功能。這里僅僅介紹了系統音量的獲取和設定指定值加上靜音開關;下邊是每個功能的代碼,是以封裝的形式來寫的,到時候直接調用即可,設定指定音量需要給一個int值即可(0~100)。

首先是設定指定音量的:

private void GetCurrentSpeakerVolume(int volume)
{
    var enumerator = new MMDeviceEnumerator();
    IEnumerable<MMDevice> speakDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active).ToArray();
    if (speakDevices.Count() > 0)
    {
        
        MMDevice mMDevice = speakDevices.ToList()[0];
        mMDevice.AudioEndpointVolume.MasterVolumeLevelScalar = volume / 100.0f;
    }
}

獲取當前系統音量值的,返回值是一個int值

private int GetCurrentSpeakerVolume()
{
    int volume = 0;
    var enumerator = new MMDeviceEnumerator();
 
    //獲取音頻輸出設備
    IEnumerable<MMDevice> speakDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active).ToArray();
    if (speakDevices.Count() > 0)
    {
        MMDevice mMDevice = speakDevices.ToList()[0];
        volume = Convert.ToInt16(mMDevice.AudioEndpointVolume.MasterVolumeLevelScalar * 100);
    }
    return volume;
}

設定系統音量是否靜音,這里是false是靜音,true是關閉靜音

public void CancelTheMute()
{
     var enumerator = new MMDeviceEnumerator();
     IEnumerable<MMDevice> speakDevices = enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active).ToArray();
     MMDevice mMDevice = speakDevices.ToList()[0];
     mMDevice.AudioEndpointVolume.Mute = false;//系統音量靜音
}

因為這是從using上引用的,只需要添加引用即可使用,

using NAudio;
using NAudio.Wave;
using VisioForge.Shared.NAudio;
using VisioForge.Shared.NAudio.CoreAudioApi;
using VisioForge.Shared.MediaFoundation;

如果有問題,歡迎評論或私聊詢問,我會盡可能回復每一個問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM