Quiero leer el nivel de volumen que puedo configurar con
pactl set-sink-volume $SINK $VOLUME
¿Hay una manera fácil de hacer eso? Tan fácil como lo hipotético
pactl get-sink-volume $SINK
?
(¿Qué estoy tratando de hacer? Utilizo pactl para configurar el volumen y me permite configurar el volumen por encima del 100%, lo cual es una mala idea (la calidad del sonido disminuye), así que estoy pensando en escribir un pequeño script que no supere el 100%. Léalo. ¿Sobre algún umbral? Establezca el 100%. A continuación: agregue 1%. Si hay otra forma de hacerlo, ¡genial, dígame! La solución más limpia probablemente le dirá al pulso que simplemente pare al 100%. Pero la pregunta original permanece, debe haber alguna forma ...)
Estoy en Debian si eso hace alguna diferencia.
command-line
pulseaudio
Higemaru
fuente
fuente
pactl list sinks
le da el volumen, pero no en un formato sencillo y agradable como set-sink-volume.Respuestas:
Eso es lo que tengo. No está bien, pero fue suficiente para mi uso. No pude encontrar la manera de hacerlo. El
pactl
simplemente no parece tener ningún medio para obtener una lista para un solo sumidero, pero se imprimen en orden ascendente. Entonces eso selecciona la enésima línea usandotail
yhead
. Tenga en cuenta que la línea de volumen puede tener volúmenes separados para los canales derecho e izquierdo y esesed
sustituto solo elige el primero, porque solo necesitaba eso.Para el registro, uso el
pactl list sinks short
para obtener mi número de sumidero activo:EDITAR 2017-10-05: Tuve que modificarlos un poco debido a los cambios en pulseaudio. Esto es lo que tengo ahora:
He
MOD
establecido en +10 o -10 y hago algunas verificaciones de límites y finalmente:fuente
pactl list sinks short | grep RUNNING | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,'
- Agregadosinks
entrepactl list
yshort
LC_ALL=C pactl list sinks | grep
que el texto "Volumen:" puede estar localizado en el idioma del usuario.volume=$(pactl list sinks | grep Volume | head -n1 | awk '{print $5}')
Si no tiene una restricción para usar otro programa, existe el
pamixer
.Puedes obtener el volumen con:
fuente
pulsemixer
paquete. Se ve casi igual.Tenga en cuenta que la respuesta de Tommi Kyntola se basa en que el fregadero esté en uso para que pueda obtener el número del fregadero.
También tenga en cuenta que se basa en índices de sumidero nombrados para ser el mismo que el índice contado . Digamos, por ejemplo, que tenemos 3 sumideros 1, 2 y 3 y ese 3 es nuestro sumidero seleccionado, luego desconectamos el número 2, dejándonos con 1 y 3. Ahora no puede contar para hundir 3 con la solución de Tommi Kyntola porque
pactl list sinks | grep "^[[:space:]]Volume:"
solo generará 2 campos de volumen, por lo tanto, la tubería a la cabeza / cola para obtener la$SINK + 1
'línea th no funcionará (he experimentado este irl, no solo estoy jugando)Mi solución funciona basándose en el supuesto de que pacmd siempre listará los sumideros en un orden específico. Si desea una solución más confiable, debe analizar la salida.
Nota: No sé si los campos de volumen difieren, el mío se ve así (desde
pacmd list-sinks
):Además, solo obtengo el volumen del primer canal (frontal-izquierdo) en formato de porcentaje (es decir, campo 5), sus canales pueden estar en diferentes niveles.
EDITAR:
Pensándolo bien, probablemente quieras obtener el nombre de sumidero predeterminado
pacmd stat
para una solución menos complicada:fuente
pactl set-sink-volume $(getdefaultsinkname) "$1"
para obtener un volumen estoy probando este:
fuente
Variante multilingüe:
Probado en pactl 5.0
fuente
Como todavía no puedo comentar (me inscribí específicamente para mejorar la respuesta de @ jgr), en el caso de que su sumidero predeterminado sea un complemento (como cualquier cantidad de complementos de ladspa) su solución de edición devolverá XX%, (tenga en cuenta la coma final ), así que esto funciona un poco mejor que eso. Lo siento, mi awk-fu es muy básico, estoy seguro de que hay una mejor manera de hacerlo.
La solución modificada también omite el '%' ya que no veo el punto de mantenerlo, y si devolvemos solo el número, podemos usarlo en matemáticas. También arreglé el caso setvol, que necesita instrucciones específicas en mi caso.
fuente
Puede usar
amixer
para leer el volumen de pulseaudio usando la opción de mezclador como esta.Ahora podemos analizarlo usando
grep
osed
operl
.fuente