Je veux lire le niveau de volume que je peux régler avec
pactl set-sink-volume $SINK $VOLUME
Existe-t-il un moyen facile de le faire? Aussi simple que l'hypothétique
pactl get-sink-volume $SINK
?
(Ce que j'essaie de faire? J'utilise pactl pour régler le volume et cela me permet de régler le volume à plus de 100%, ce qui est une mauvaise idée (la qualité sonore diminue), donc je pense à écrire un petit script qui ne dépasse pas 100%. Lisez-le. Au-dessus d'un certain seuil? Réglez à 100%. En dessous? ajoutez 1%. S'il y a une autre façon de le faire, très bien, dites-moi! La solution la plus propre serait probablement de dire au pouls de s'arrêter à 100%. Mais la question d'origine reste, il doit y avoir un moyen ..)
Je suis sur Debian si cela fait une différence.
command-line
pulseaudio
Higemaru
la source
la source
pactl list sinks
vous donne le volume, mais pas dans un format simple et agréable comme set-sink-volume.Réponses:
Voilà ce que j'ai. Ce n'est pas soigné, mais c'était suffisant pour mon usage. Je n'ai pas trouvé le moyen de le faire. Le
pactl
juste ne semble pas avoir de moyen d'obtenir la liste d'un seul évier, mais ils sont imprimés par ordre croissant. Donc, cela sélectionne la nième ligne en utilisanttail
ethead
. Notez que la ligne de volume peut avoir des volumes séparés pour les canaux droit et gauche et que lesed
substitut ne choisit que le premier, car j'avais besoin de cela.Pour mémoire, j'utilise le
pactl list sinks short
pour obtenir mon numéro de récepteur actif:EDIT 2017-10-05: J'ai dû les modifier un peu à cause des changements dans pulseaudio. Voici ce que j'ai maintenant:
J'ai
MOD
mis à +10 ou -10 et je fais quelques vérifications de limites et enfin:la source
pactl list sinks short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,'
- Ajoutésinks
entrepactl list
etshort
LC_ALL=C pactl list sinks | grep
que le texte "Volume:" puisse être localisé dans la langue de l'utilisateur.volume=$(pactl list sinks | grep Volume | head -n1 | awk '{print $5}')
Si vous n'avez pas de restriction pour utiliser un autre programme, il y a le
pamixer
.Vous pouvez obtenir le volume avec:
la source
pulsemixer
paquet. Cela ressemble à peu près.Notez que la réponse de Tommi Kyntola repose sur l'évier à utiliser afin que vous puissiez réellement obtenir le numéro de l'évier.
Notez également qu'il s'appuie sur des index récepteurs nommés pour être identiques à l' index compté . Disons, par exemple, que nous avons 3 éviers 1, 2 et 3 et que 3 est notre évier sélectionné, nous déconnectons ensuite le numéro 2, nous laissant avec 1 et 3. Maintenant, vous ne pouvez pas compter pour couler 3 avec la solution de Tommi Kyntola parce que
pactl list sinks | grep "^[[:space:]]Volume:"
ne produira que 2 champs de volume, donc la tuyauterie vers la tête / la queue pour obtenir la$SINK + 1
'e ligne ne fonctionnera pas.Ma solution fonctionne sur la base de l'hypothèse que pacmd listera toujours les puits dans un ordre spécifique. Si vous souhaitez une solution plus fiable, vous devez analyser la sortie.
Remarque: je ne sais pas si les champs de volume diffèrent, le mien ressemble à ceci (de
pacmd list-sinks
):De plus, je ne reçois que le volume de la première chaîne (avant gauche) en format pourcentage (c'est-à-dire le champ 5), vos chaînes peuvent être à différents niveaux.
MODIFIER:
Après réflexion, vous voulez probablement obtenir le nom du récepteur par défaut
pacmd stat
pour une solution moins compliquée:la source
pactl set-sink-volume $(getdefaultsinkname) "$1"
pour obtenir un volume, j'essaie celui-ci:
la source
Variante multilingue:
Testé sur pactl 5.0
la source
Comme je ne peux pas encore commenter (signé spécifiquement pour améliorer la réponse de @ jgr), dans le cas où votre récepteur par défaut est un plugin (comme n'importe quel nombre de plugins ladspa), sa solution d'édition retournera XX%, (notez la virgule de fin ), donc cela fonctionne un peu mieux que ça. Désolé, mon awk-fu est très basique, je suis sûr qu'il y a une meilleure façon de le faire.
La solution modifiée omet également le '%' car je ne vois pas l'intérêt de le garder, et si nous retournons juste le nombre, nous pouvons l'utiliser en mathématiques. Correction également du cas setvol, qui nécessite des instructions spécifiques dans mon cas.
la source
Vous pouvez utiliser
amixer
pour lire le volume pulseaudio en utilisant l'option de mixage comme celle-ci.Maintenant, nous pouvons l'analyser en utilisant
grep
oused
ouperl
.la source