Revisión de PipeWire como reemplazo de PulseAudio de Mar, 04/01/2025 - 13:49

La revisión le permite rastrear las diferencias que hay entre distintas versiones de una entrada.

PipeWire es un servidor que gestiona transmisiones de audio y vídeo. Es un sustituto útil de PulseAudio y Jack. PipeWire proporciona un motor de baja latencia para dispositivos de audio y vídeo y mejora la gestión de dichas transmisiones mediante el uso del kernel estándar de Linux-libre, por lo que la mayoría de los usuarios ya no necesitarán un kernel en tiempo real. PipeWire está disponible en el Archivo de paquetes de Trisquel y se puede instalar opcionalmente.

Características principales

  • Captura y reproducción de audio y video con mínima latencia
  • Procesamiento multimedia en tiempo real de audio y video
  • Arquitectura multiproceso que permite a las aplicaciones compartir contenido multimedia
  • Compatibilidad fluida con aplicaciones PulseAudio, JACK, ALSA y GStreamer
  • Compatibilidad con aplicaciones en entorno aislado. Consulta Flatpak para más información.

Para ver el estado del servicio PipeWire, abre una terminal y ejecuta:

systemctl --user status pipewire pipewire-session-manager

Instalación de PipeWire

Primero, instala las bibliotecas cliente ejecutando:

sudo apt install pipewire-audio-client-libraries libspa-0.2-bluetooth libspa-0.2-jack

Se recomienda instalar WirePlumber al usar PipeWire como servidor de sonido del sistema. WirePlumber es un gestor de sesiones/políticas modular más avanzado para PipeWire. El paquete 'wireplumber' contiene el demonio WirePlumber y las utilidades de línea de comandos.

sudo apt install wireplumber pipewire-media-session-

Ten en cuenta que hay un '-' al final de la línea, que indica a apt que elimine el paquete 'pipewire-media-session'.

Configuración de clientes ALSA y JACK

Si solo desea reemplazar PulseAudio con Pipewire, habilite el servicio WirePlumber y reinicie, como se describe a continuación.

Si desea configurar el cliente ALSA con PipeWire, ejecute:

sudo cp /usr/share/doc/pipewire/examples/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/

Para configurar el cliente JACK con PipeWire, ejecute:

sudo cp /usr/share/doc/pipewire/examples/ld.so.conf.d/pipewire-jack-*.conf /etc/ld.so.conf.d/

Actualice la caché de la biblioteca compartida con el siguiente comando:

sudo ldconfig

Elimine 'pulseaudio-module-bluetooth' para habilitar la compatibilidad con Bluetooth para PipeWire.

sudo apt remove pulseaudio-module-bluetooth

Habilitar la sesión multimedia de WirePlumb

Finalmente, habilite WirePlumb ejecutando:

systemctl --user --now enable wireplumber.service

¡Y reinicia!

Tras reiniciar, comprueba la salida de

pactl info

Debería contener una línea con 'PulseAudio (en PipeWire x.x.x)'

Problemas conocidos

El paquete pulseaudio-module-bluetooth forma parte de trisquel-recommended, que se eliminará si usas Pipewire como se describe en esta wiki. Si reinstalas trisquel-recommended, se instalará de nuevo pulseaudio-module-bluetooth. Esto está causando problemas de reproducción. Elimina pulseaudio-module-bluetooth de nuevo ejecutando:

sudo apt remove pulseaudio-module-bluetooth

¡Y reinicia!

Deshacer cambios

Para restaurar los cambios y usar PulseAudio como antes, primero elimine las bibliotecas cliente ejecutando:

sudo apt remove pipewire-audio-client-libraries libspa-0.2-bluetooth libspa-0.2-jack

Elimine wireplumber y vuelva a instalar el paquete de sesión multimedia anterior.

sudo apt install pipewire-media-session wireplumber-

Observe el símbolo "-", como se describió anteriormente.

Finalmente, vuelva a habilitar el servicio pipewire-media-session ejecutando estos comandos:

rm -f ~/.config/systemd/user/pipewire-session-manager.service

systemctl --user --now enable pipewire-media-session

Y deshabilite el servicio pipewire-pulse ejecutando:

systemctl --user --now disabled pipewire-pulse.service pipewire-pulse.socket

Reinstale 'pulseaudio-module-bluetooth' ejecutando:

sudo apt install pulseaudio-module-bluetooth

Y vuelva a habilitar el servicio pulseaudio original ejecutando:

systemctl --user --now enable pulseaudio.service pulseaudio.socket

Puede comprobar el resultado ejecutando:

pactl info

Revisiones

04/01/2025 - 13:49
Carlos segura