En Ubuntu y probablemente en otras distribuciones, hay algo gráfico para cambiar el dispositivo de salida de audio. He intentado escribir una herramienta de línea de comandos que haga lo mismo, pero no siempre funciona.
Lo que estoy haciendo para cambiar a, digamos, sumidero 0 es lo siguiente:
pacmd set-default-sink 0
Que creo que debería hacer todo nuevo las entradas van al sumidero 0. Luego, para cada entrada existente, según pacmd list-sink-inputs
estoy haciendo:
pacmd move-sink-input <input_id> 0
Pero a menudo no funciona. A menudo, cambio de lavabo, luego reproduzco algo de audio en alguna aplicación y todavía estará conectado al antiguo lavabo. ¿Que me estoy perdiendo aqui? ¿Cómo puedo hacer esto con firmeza?
Respuesta aceptada:
De esta entrada de blog:
PulseAudio viene con dos herramientas básicas de línea de comandos, llamadas pacmd y pactl. Former ofrece un comando set-default-sink, pero eso no hace lo que esperas de él. Resulta que, al menos en mi sistema, el demonio PulseAudio mantiene configuraciones persistentes para cada aplicación que alguna vez se conectó a él. Esto significa que el sumidero predeterminado solo se usa para aplicaciones que el daemon aún no ha visto.
En otras palabras, este bloguero se había encontrado exactamente con el mismo problema que tú:
- cambiar el sumidero predeterminado solo afecta a los programas que no se han utilizado antes
- mover la entrada existente solo afecta a los programas actualmente activos con la tarjeta de sonido
- necesitará una herramienta para recorrer la configuración persistente y volver a señalarla en la nueva tarjeta.
Y entonces este blogger había escrito paswitch
, una herramienta de línea de comandos para hacer exactamente eso. Puede encontrar su código fuente en formato Git aquí.
Para instalar:
- Asegúrese de tener un paquete de biblioteca de desarrollo de Pulseaudio (
libpulse-dev
o similar) instalado. También necesitarás elgcc
compilador ymake
utilidad. - Ejecute
git clone https://www.tablix.org/~avian/git/paswitch.git
para descargar el código fuente. cd paswitch
para ingresar al directorio creado por elgit clone
comando, luego ejecutemake
.- Si se completó sin errores, ahora debería haber un
paswitch
binario en el directorio. Cópielo en su/usr/local/bin/
directorio. - Lea el
README
archivo en el directorio para ver un ejemplo de cómo usarlo.
Otra opción es decirle al daemon de PulseAudio que no conserve la configuración del sumidero para las aplicaciones, agregando restore_device=false
opción a module-stream-restore
línea en /etc/pulse/default.pa
:
load-module module-stream-restore restore_device=false
Después de hacer eso y reiniciar PulseAudio, cambiar el sumidero predeterminado hará que todas las nuevas aplicaciones de sonido lo tengan predeterminado.
Pero su kilometraje puede variar, según el entorno de escritorio que utilice:en mi Debian 9, deshabilitar la persistencia causó otro comportamiento molesto con KDE, y terminé volviendo al comportamiento predeterminado. Si no recuerdo mal, provocó que la lista de Preferencias de dispositivos -> Configuración del sistema de KDE -> Multimedia -> Audio y video -> obtenga una nueva copia de mis dispositivos de audio en cada inicio de sesión.
Relacionado:¿Cómo sabe gcc dónde está instalado boost?