Il tasto Mute silenzia Alsa e PulseAudio, ma riattiva solo Alsa


20

Quando premo il tasto mute sulla tastiera, sia il canale master Alsa che il canale master PulseAudio vengono silenziati, premendolo di nuovo si ripristina solo il canale master alsa, il canale master pulseaudio viene silenziato. Risultato: nessun suono. Come lo risolvo?

Risposte:


11

Esegui questo comando:

amixer -D pulse set Master 1+ unmute

12
Puoi spiegare cosa fa questo comando in modo che altri utenti sappiano?
Ripristina Monica - ζ--

1
A cosa serve 1+? Non ho trovato una spiegazione nella pagina man di amixer.
jarno,

usare toggle invece di riattivare l'audio è utile se si sta vincolando il comando a una chiave hardwareamixer -D pulse set Master 1+ toggle
Pol Alvarez Vecino,

20

è molto più semplice però.

amixer -D pulse set Master Playback Switch toggle

impostare questo come tasto di scelta rapida su "Disattiva \ Riattiva". i controlli del volume possono essere lasciati così come sono.

Mint 15 Mate - capito da solo, funziona bene per me.


Qualunque cosa sia, ha funzionato bene su Arch Linux. Audio disattivato e non attivato correttamente. Ora ho associato questo comando al comando mute sul mio laptop, perché uno predefinito non ripristina l'audio di tutti i canali. GRAZIE
Erikas,

Questo ha funzionato per me con Ubuntu 14.04 + i3, la risposta accettata non ha funzionato.
Ingo Bürk,

1
amixer -D pulse set Master toggleandrà bene. Amixer si aspetta un semplice nome di controllo del mixer per il comando set o sset e anche se accettasse un nome di controllo del mixer completo, dovresti citare un nome di più parole. È possibile utilizzare il modificatore opzionale playbacknel comando in questo modo:, amixer -D pulse set Master playback togglema non è necessario, se Masternon ha anche capacità di acquisizione. Usando modificatori opzionali puoi anche controllare a quali canali si applica il comando, se il tuo sistema è in grado di riprodurre il suono surround.
jarno,

5

Ho avuto lo stesso problema nell'esecuzione del desktop MATE su Linux Mint Debian Edition (201204).

L'azione "Volume su" non è stata in grado di riattivare il volume. Mi sono reso conto che il problema era con Pulseaudio, ma il pacchetto mate-media-gstreamere mate-settings-daemon-gstreamerdove installato di default. Installando mate-media-pulsee mate-settings-daemon-pulse(quello disinstallato mate-media-gstreamere mate-settings-daemon-gstreamer) e tadam ... l'azione "Aumenta volume" è stata in grado di riattivare il volume!

Spero che questo funzioni anche per te!


Ha funzionato per me (su Debian Jessie) e questa soluzione è permanente, mentre le soluzioni AFAIU che coinvolgono amixer -D pulse set Master xxxsono un colpo solo o devono essere mappate manualmente su un collegamento. La soluzione proposta qui appare come dovrebbe essere.
Jérôme,

2

Si tratta di un problema con pulseaudio, i comandi per alsa o amixer non invieranno correttamente l'audio di impulso. Quando i comandi alsa inviano un segnale di silenziamento, si tratta di un comando di attivazione / disattivazione (invia lo stesso comando per disattivare / riattivare l'audio).

Ora in pulseaudio hanno codice mute e mute separato! Molti riferiscono che la disinstallazione di pulseaudio risolverà il problema, ma per alcuni questa non è davvero una risposta accettabile (come me, perché il polso è utile per molte app).

Quindi per risolvere questo dobbiamo creare una sceneggiatura,

1- Crea un nuovo documento vuoto in un editor di testo come gedit o mousepad,

2- Incolla questo codice nel doccument, Soruce of code: 2

#!/bin/bash
#### Create ~/.pulse/mute if not exists
ls ~/.pulse/mute &> /dev/null
if [[ $? != 0 ]]
then
    echo "false" > ~/.pulse/mute
fi

####Create ~/.pulse/volume if not exists
ls ~/.pulse/volume &> /dev/null
if [[ $? != 0 ]]
then
    echo "65536" > ~/.pulse/volume
fi

CURVOL=`cat ~/.pulse/volume`     #Reads in the current volume
MUTE=`cat ~/.pulse/mute`          #Reads mute state

if [[ $1 == "increase" ]]
then
    CURVOL=$(($CURVOL + 3277)) #3277 is 5% of the total volume, you can change this to suit your needs.
    if [[ $CURVOL -ge 65536 ]]
    then
        CURVOL=65536        
    fi
elif [[ $1 == "decrease" ]]
then
    CURVOL=$(($CURVOL - 3277))
    if [[ $CURVOL -le 0 ]]
    then
        CURVOL=0        
    fi
elif [[ $1 == "mute" ]]
then
    if [[ $MUTE == "false" ]]
    then
        pactl set-sink-mute 0 1
        echo "true" > ~/.pulse/mute
    exit    
    else
        pactl set-sink-mute 0 0
        echo "false" > ~/.pulse/mute    
    exit
    fi
fi

pactl set-sink-volume 0 $CURVOL
echo $CURVOL > ~/.pulse/volume # Write the new volume to disk to be read the next time the script is run.

3- Assegna un nome al "volume" del file (non è necessaria l'estensione), mettilo da qualche parte e non lo eliminerai come la tua cartella home

4- Rendi eseguibile il file facendo clic con il pulsante destro del mouse sul file, vai su Proprietà, quindi sulla scheda Autorizzazioni e usa la casella di controllo per contrassegnarlo come eseguibile, ciò consentirà l'esecuzione dello script. mark-file-as-executible-gui

5- Successivamente è necessario collegare i comandi alla tastiera, i comandi per il codice sono aumento, diminuzione e silenziamento.

Quindi vai alle impostazioni della tastiera - how-do-change-my-keyboard-shortcuts-in-xubuntu , Nell'area delle scorciatoie da tastiera, fai clic su Aggiungi, quindi apri, Apri il file "volume" che abbiamo creato, quindi aggiungi il comando per il codice dopo il volume, l' aumento del volume di lettura o il volume mute ect. ma con la posizione in cui si trova il file di codice prima del tipo "/ home / nome utente / volume muto"

Quindi assegnarlo alla tastiera premendo il tasto stesso, o se il tasto è già utilizzato,
~ Molto probabilmente il caso ~ trovarli e sostituire il comando.

Le scorciatoie da tastiera sono probabilmente chiamate XF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioMute . Dal momento che solo il silenziamento viene interrotto, concentra i tuoi sforzi per cambiarlo prima.

Bug: 1


Ho appena XF86AudioMutemappato il comando amixer set Master toggle. I tasti di aumento e riduzione del volume vengono associati in modo simile ai amixercomandi.
Chan-Ho Suh,

@ Chan-HoSuh hai lo stesso problema? puoi semplicemente chiamare il comando mute di questo script se vuoi, per qualche ragione il polso stava intercettando il muto sulla mia macchina, l'amixer invia un interruttore, che viene interpretato come muto solo dal polso, o semplicemente intercettando la pressione del tasto? Stavo usando uno script simile che mostrava prima una barra del volume :(, ma questo silenzia e riattiva, e ora hanno le notifiche, quindi va bene, l'interruttore è come è stato impostato prima.
Mateo,

Un piccolo miglioramento alla sceneggiatura è anche quello di forzare l'audio su aumento / diminuzione del volume. Ho anche aggiunto 'paplay /usr/share/sounds/ubuntu/stereo/message.ogg' per ottenere feedback sul volume.
dma,

Forse era diverso prima, ma con pulseaudio 4.0 è possibile utilizzare comandi come pactl set-sink-volume 0 +5%, pactl set-sink-volume 0 -5%e pactl set-sink-mute 0 toggleper aumentare il volume, diminuire il volume e attivare o disattivare il volume, rispettivamente.
jarno,

@jarno sì, questo era per risolvere un problema specifico (bug), quindi probabilmente è stato risolto / non pertinente, ma rimane un piccolo trucco se non altro funziona
Mateo


1

Ha funzionato per me il 12.10:

    #!/bin/sh
    amixer -c 0 sset Master,0 mute
    sleep 5
    amixer -D pulse set Master 1+ unmute

1

Per gli utenti di KDE e kmix, se usi questo script avrai comunque il feedback visivo funzionante:

#! /bin/bash

DBUS=qdbus 2> /dev/null

case "$1" in
  volup)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/increase_volume com.trolltech.Qt.QAction.trigger
        ;;
  voldn)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/decrease_volume com.trolltech.Qt.QAction.trigger
        ;;
  mute)
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/mute com.trolltech.Qt.QAction.trigger
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo $(${DBUS} org.kde.kmix /Mixers/0/Master_0 org.kde.KMix.Control.mute | sed 's/false/0/g;s/true/1/g')
        ;;
  *)
    echo "Usage: mixctl <volup|voldn|mute>" >&2
    exit 1
    ;;
esac

exit 0

Uso:

1) Salvalo come ~ / bin / mixctl
2) Annulla mappatura delle scorciatoie da tastiera kmix predefinite per Volume su / Volume giù e Silenzioso
3) Crea tre nuove scorciatoie da tastiera personalizzate denominate 'Volume su', 'Volume giù' e 'Muto'
- > tipo di collegamento: comando
-> i comandi utilizzano ~ / bin / mixctl VolSu , ~ / bin / mixctl voldn e ~ / bin / mixctl mute , rispettivamente,


1

Ho avuto lo stesso problema su più macchine Xubuntu 12.04 che sono state aggiornate a XFCE 4.10. Ecco un modo molto veloce per risolvere questo problema dalla riga di comando (o con uno bashscript).

A differenza delle precedenti soluzioni che offrono script stop-gap, questa soluzione ripristina completamente la funzione del pulsante mute / mute.

È sufficiente emettere i seguenti due comandi una volta per risolvere il problema una volta per tutte:

$ xfconf-query --channel xfce4-mixer --property /active-card --set PlaybackInternalAudioAnalogStereoPulseAudioMixer --reset
$ xfconf-query --create --channel xfce4-keyboard-shortcuts --property /commands/custom/XF86AudioMute --type string --set 'amixer -D pulse set Master 1+ toggle'

1

Ho trovato una soluzione semplice che funziona bene per me in questo forum . Nel dettaglio, è necessario aggiungere questo a /etc/asound.conf:

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

E quindi imposta una scorciatoia da tastiera per il tasto mute con il comando che è:

amixer set Master toggle

0

È possibile utilizzare le impostazioni della tastiera per impostare il pulsante di disattivazione dell'audio per eseguire il comando trovato QUI . Anche se il primo metodo elencato su questo link era inutile per me, la seconda grande opera per XFCE4: $ pactl set-sink-mute 0 toggle. È inoltre possibile creare uno script o un programma di avvio per eseguire il comando al clic del mouse.

Cordiali saluti, se stai usando qualcosa come Cinnamon (e probabilmente altri desktop basati su gnome) il suggerimento sopra di user197761 sembra migliore, poiché l'applet audio di cinnamon riconosce che il volume è disattivato: amixer -D pulse set Master Playback Switch toggle(se ti piace quest'ultimo comando, per favore vota la sua risposta, non mio.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.