Tengo un conjunto de auriculares inalámbricos agradables que uso de vez en cuando, además de mis altavoces y mi micrófono normal.
Me gustaría escribir un script para cambiar entre una fuente de entrada y salida y otra, esencialmente un cambio entre mis auriculares y mis altavoces + micrófono.
Me gustaría cambiar entre esto:
...y esto:
¿Hay alguna manera para mí de hacer una transferencia entre las dos entradas y salidas? Básicamente estoy buscando algo como esto:
CURRENT_INPUT="$(get-current-input-name)"
CURRENT_OUTPUT="$(get-current-output-name)"
if [ "$CURRENT_INPUT" == "Vengeance 2000" ]; then
set-current-input "HD Pro Webcam C920"
else
set-current-input "Vengeance 2000"
fi
if ["$CURRENT_OUTPUT" == "Vengeance 2000" ]; then
set-current-output "Built-in Audio"
else
set-current-output "Vengeance 2000"
fi
¿Hay alguna manera de escribir esto?
audio
alsa
pulseaudio
Naftuli Kay
fuente
fuente
man pactl
opciones de línea de comandos de PulseAudio.Respuestas:
Como señaló @ Teresa-e-Junior,
pactl
es la herramienta a utilizar:En primer lugar, es posible que deseemos obtener las identificaciones de nuestros sumideros PA. En mi sistema esto es lo que obtengo:
El sumidero 1 es actualmente mi sumidero predeterminado.
Pero ahora quiero que todas mis transmisiones actuales y futuras se reproduzcan a través de HDMI (es decir, sumidero 0).
Hay un comando para establecer el sumidero predeterminado para PulseAudio, pero no parece tener ningún efecto en mi PC:
En cambio, las nuevas transmisiones parecen estar conectadas al sumidero al que se le trasladó una transmisión más recientemente.
Entonces, digamos a pactl que mueva todas las transmisiones actualmente en reproducción para hundirse
0
. Primero tendremos que enumerarlos:Ok, tenemos dos transmisiones (ID 290 y 295) que están conectadas al receptor
1
.Vamos a moverlos a hundirse
0
:Entonces, eso debería ser. Ahora solo tenemos que hacer un script que haga el trabajo por nosotros:
Puede llamarlo con una ID de sumidero o un nombre de sumidero como parámetro (es decir,
0
o algo parecidoalsa_output.pci-0000_01_00.1.hdmi-surround
).Ahora puede adjuntar este script a un evento udev o atajo de tecla.
fuente
0 sink input(s) available.
? ¿Pero ese flash player de mierda todavía reproduce audio? Y veo flash player en laclient(s) logged in
sección depacmd list
$ pacmd set-default-sink INDEX
todavía es necesario para mi script; de lo contrario, los comandos del teclado para cambiar el volumen continúan usando la fuente antigua del receptor.Los siguientes comandos se utilizan para manipular el servidor de sonido PulseAudio:
Aquí hay algunos ejemplos de cómo funcionan.
pacmd list-sinks
:: nombre de la lista o número de índice de posibles sumiderospacmd set-default-sink [sinkname]
:: establecer el sumidero de salida predeterminadopacmd set-default-source [sourcename]
:: establecer la entrada predeterminadapacmd set-sink-volume [index] [volume]
:: establecer el volumen del sumideropacmd set-source-volume index volume
:: rango de control de volumen 0 - 65536 (cuanto menor es el número, menor es el volumen)Estos son solo algunos que saqué de la página wiki y man. Consulte esto para obtener información más detallada. O puede ver los comandos
--help
o laman
página.También hay una herramienta de línea de comandos que sirve para este propósito. Su nombre es ponymix . Es un mezclador de línea de comandos para PulseAudio. El enlace proporcionado es a los proyectos github. Está desarrollado por un amigo y compañero de usuario / desarrollador de confianza de Arch Linux. Si no está ejecutando Arch, puede compilarlo desde la fuente usando
make
ysudo make install
.fuente
En mi computadora portátil con Fedora 20, la salida HDMI no aparece como un receptor en el perfil predeterminado, sino como un perfil diferente .
Solo tengo 1 receptor como este, buena música sonando en los altavoces de mi computadora portátil:
Si corro,
pactl set-card-profile 0 output:hdmi-stereo
entonces se está reproduciendo buena música a través de HDMI. Yo obtengo:Para volver al valor predeterminado, solo ejecuto
pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
. De cualquier manera, el valor predeterminado está allí nuevamente si reinicio.La lista de perfiles para mi tarjeta está en algún lugar de la
pactl list cards
salida.fuente
set-card-profile
no se mencionó anteriormente, y esa es la información más importante sobre esta respuesta.Extendiendo la respuesta aceptada por @cinelli, se me ocurrió un script que
¡Cambie según sea necesario!
fuente