C#NAudioは、システムボリュームを取得および制御し、指定された値とミュート設定を設定できます

私は最近警報システムに取り組んでいますが、システムの音量は常に警備員によってミュートされています。必死になって、この戦略に頼ってシステムの音量を制御する方法を見つける必要がありました。各呼び出しの前に、最初に決定します。音が鳴ったかどうか、もう一度警察に行ってください。

ボリュームを取得する方法は、録音、録音の再生、フォーマット変換、ミキシング調整などの機能を満たすことができるオープンソースツールNAudioを使用することです。ここでは、システムボリュームとミュートスイッチの指定値の取得と設定についてのみ紹介します。以下は、パッケージ形式で記述され、その時点で直接呼び出すことができる各関数のコードです。指定された設定の設定ボリュームにはintが必要です。値は(0〜100)にすることができます。

1つ目は、指定したボリュームを設定することです。

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;//系统音量静音
}

これは使用から引用されているため、使用する参照を追加するだけで済みます。

NAudioを使用する;
NAudio.Waveを使用します。
VisioForge.Shared.NAudioを使用する;
VisioForge.Shared.NAudio.CoreAudioApiを使用します。
VisioForge.Shared.MediaFoundationを使用する;

ご不明な点がございましたら、プライベートチャットでコメントまたは質問してください。可能な限りすべての質問に回答します。

おすすめ

転載: blog.csdn.net/weixin_37081112/article/details/113703284