GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cómo cambiar de forma robusta el dispositivo de salida Pulseaudio desde la línea de comandos?

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 el gcc compilador y make 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 el git clone comando, luego ejecute make .
  • 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?
Linux
  1. Cómo instalar software desde la línea de comandos de Linux

  2. ¿Cómo saber en qué versión de Os X estoy desde la línea de comandos?

  3. ¿Cómo invocar una macro de OpenOffice desde la línea de comandos de Linux?

  4. ¿Cómo puedo copiar una carpeta desde la línea de comandos de Linux?

  5. Cómo ejecutar TeX desde la interfaz de línea de comandos en Linux

Cómo tomar capturas de pantalla desde la línea de comandos usando "Scrot" en Linux

Cómo averiguar la dirección IP pública desde la línea de comandos en Linux

Cómo ajustar el brillo del monitor desde la línea de comandos en Linux

Cómo buscar archivos desde la línea de comandos de Linux

Eliminar directorio en Linux:cómo eliminar una carpeta desde la línea de comandos

Cómo comprobar las estadísticas de red de Linux desde la línea de comandos