C # NAudio obtiene y controla el volumen del sistema, puede establecer el valor especificado y la configuración de silencio

He estado trabajando en un sistema de alarma recientemente, pero el personal de seguridad siempre silencia el volumen del sistema. Desesperado, tuve que recurrir a esta estrategia y encontrar una manera de controlar el volumen del sistema. Antes de cada llamada, primero determinaba si el sonido estaba encendido, y luego Vaya a la policía nuevamente.

La forma de obtener el volumen es utilizar una herramienta de código abierto NAudio, que puede cumplir con las funciones de grabación, reproducción de grabación, conversión de formato, ajuste de mezcla, etc. Aquí solo se presenta la adquisición y configuración del valor especificado del volumen del sistema más el interruptor de silencio; a continuación se muestra el código de cada función, que está escrito en forma de paquete y se puede llamar directamente en el momento. el volumen requiere un int El valor puede ser (0 ~ 100).

El primero es establecer el volumen especificado:

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;
    }
}

Obtenga el valor actual del volumen del sistema, el valor de retorno es un valor 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;
}

Establezca si el volumen del sistema está silenciado, aquí es falso para silenciar, verdadero es para desactivar el silencio

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

Debido a que esto se cita desde el uso, solo necesita agregar una referencia para usar,

usando NAudio;
usando NAudio.Wave;
usando VisioForge.Shared.NAudio;
utilizando VisioForge.Shared.NAudio.CoreAudioApi;
usando VisioForge.Shared.MediaFoundation;

Si tiene alguna pregunta, por favor comente o pregunte en el chat privado. Responderé a todas las preguntas tanto como sea posible.

Supongo que te gusta

Origin blog.csdn.net/weixin_37081112/article/details/113703284
Recomendado
Clasificación