Reproductores de multimedia a través de JACK

#1 por Pablo_F el 17/01/2010
Como sabemos, cuando JACK está ejecutándose se aborta el audio de toda aplicación que no sea su cliente. Por ello, si jack está activo no podemos escuchar una canción o ver un video en un reproductor multimedia por la misma tarjeta de audio que usa Jack... a menos que consigamos "jackificar" el reproductor. En este caso no solamente podremos escuchar las canciones sin tener que finalizar el servidor jack, sino que además podremos integrar el stream de audio en nuestra sesión, ruteándolo hacia donde nos plazca. Por ejemplo, podemos pasarlo a través de plugins de efectos, ecualización... y/o llevarlo a las entradas de captura de un grabador cliente de jack, por ejemplo, a una pista de Ardour o Audacity.

En esta entrada vamos a mostrar cómo jackificar algunos reproductores populares. En algunos casos, sus salidas se autoconectarán a los system_playbacks y en otros las tendremos que conectar manualmente desde la ventana de conexiones de qjackctl (Jack Control), pestaña Audio. El comportamiento, en cuanto a mostrar los puertos en esta ventana, tampoco es igual para todos. Algunos sólo los mostrarán durante la reproducción y desaparecerán cuando se para. Algún otro será más "jack-friendly" y mostrará puertos mientras la aplicacion esté simplemente levantada. Para los primeros hay un truco para que no desaparezcan los puertos y así poder hacer tranquilamente las conexiones: Reproducir y pausar immediatamente después (el mismo truco que usamos con Audacity cuando va a través de Jack).

Estas instrucciones están probadas en y orientadas hacia ubuntu / ubuntustudio 9.10., aunque en algunos casos el método puede ser similar para otras versiones de ubuntu y para otras distribuciones. Si no se indica lo contrario, todos los reproductores indicados están instalados desde los repositorios oficiales de ubuntu, desde el gestor de paquetes synaptic o método equivalente desde terminal.

La idea de esta entrada no es hacer una evaluación sobre reproductores, cada uno verá. La propuesta es: "Si alguno de estos está entre tus favoritos, aquí tienes cómo hacerlo sonar a través de Jack". He tenido un par de fracasos como veréis. Se agradecen sugerencias. También espero que alguien se anime a aumentar la lista.

Audacious

Instalar el paquete audacious-plugins-extra. Lanzamos jack, lanzamos audacious y con botón derecho sobre la barra de arriba, vamos a preferences, audio y elegimos el "Jack Output Plugin".

Rhythmbox

Necesitamos el paquete gstreamer0.10-plugins-bad

Ejecutamos 'gconf-editor' y en el directorio .../system/gstreamer/0.10/default/ damos el valor 'jackaudiosink' a los nombres 'audiosink', 'chataudiosink' y 'musicaudiosink'. Si no queremos que se autoconecten las salidas del reproductor a los system_playbacks, pondremos: 'jackaudiosink connect=none'

Exaile

Exaile también utiliza gstreamer, así que hay que hacer lo mismo que para rhythmbox. Además, en Editar->Preferencias->Playback, nos aseguramos que el "Audio Sink" es JACK.


VLC

En ubuntu, instalamos el paquete 'vlc-plugin-jack'. Después, desde el menú Herramientas->Preferencias->Audio, elegimos la Salida de Tipo: "Salida de audio JACK".
Si queremos que los puertos de salida se autoconecten a los system_playbacks, editamos:

gedit /.config/vlc/vlcrc

En la línea 750, más o menos, encontramos:

# Automáticamente conectar a clientes escribibles (boolean)
#jack-auto-connect=0

Cambiamos la segunda línea a:
jack-auto-connect=1


Mplayer / gmplayer

Desde línea de comandos, podemos especificar la salida a jack con: 'mplayer -ao jack archivo', para un archivo de audio o video.

Podemos hacer que esto sea permanente editando el archivo '~/.mplayer/config' y añadiendo la línea:

ao=jack

De esta forma, podemos usar mplayer desde línea de comandos, simplemente con 'mplayer archivo'.

Sin embargo, esto no es suficiente para lanzar mplayer con botón derecho sobre el archivo que queremos reproducir (en gnome al menos, esto invoca a gmplayer). Para ello, editamos el archivo '~/.mplayer/gui.conf' y sustituimos la línea:

ao_driver = "pulse,alsa,sdl:aalib" por:
ao_driver = "jack"

(Podemos poner también 'jack,alsa' o 'jack,pulse' en lugar de 'jack' a secas, tanto en 'config' como en 'gui.conf', para permitir que mplayer use alsa o pulseaudio como segunda opción, si jack no está activo).

Aqualung

No hay que hacer nada. Si jack está activo, funcionará con jack (si no, con pulseaudio o alsa). Además, los puertos de salida se muestran en las conexiones de qjackctl incluso cuando aqualung está parado. Ojalá todos los demás hiceran lo mismo.

Amarok

Amarok usa el motor de audio xine. El problema con karmic es que su versión de libxine no incluye soporte para jack. Habría que recompilar libxine... o añadir el repositorio PPA de Motin "https://launchpad.net/~motin/+archive/until-jack-is-included-in-main". Vamos a hacer esto último. Si desplegamos la línea "Technical details about this PPA" vemos que las lineas que hay que añadir a /etc/apt/sources.list. Lo podemos hacer de dos maneras, o editando este archivo y añadiendo estas líneas o bien, desde orígenes del software (en el menú "Sistema->Administración"), pestaña otro software, añadir y copiar las líneas. Para obtener la firma, haremos en terminal:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xAxAxAxAxA

El código del final es un ejemplo inexistente. Ahí hay que poner la firma (Signing key) del PPA, pero sólo el código que aparece detrás de la barra.

Hecho esto, ya podemos utilizar nuestro gestor de paquetes favorito. Si usamos Synaptic, habrá que recargar. Después buscamos 'libxine' y actualizamos el paquete 'libxine1-plugins' que nos actualizará sus dependencias, entre otras, 'libxine1'. Veremos que la versión de estos paquetes tiene la coletilla "+withjack1" (v. nota 1).

Después en Amarok, Preferencias, Configurar Amarok, Reproducción, Configurar, Preferencia del Dispositivo, Salida de Audio, Música, nos debería aparecer el dispositivo de salida "Jack Audio Connection Kit". Lo seleccionamos y lo subimos arriba del todo con el botón "Preferir". Lo mismo podemos hacer para el resto de salidas de audio; aunque creo que Amarok sólo tendrá en cuenta la que elijamos para música, de esta forma configuramos xine para otros tipo de salida.

Al igual que aqualung, los puertos de salida de xine no desaparecen cuando amarok está parado :)

Kaffeine

También utiliza xine. Si en la configuración de xine (desde Amarok, como acabamos de ver) hemos elegido Jack para la salida de video, fucionará con Jack a la primera.


flashplayer (youtube, vimeo, myspace, jamendo...)

Hasta hace poco, casi la única forma de tener el flash player como cliente de jack era a través del plugin alsa-jack, que había que recompilar pues ubuntu no trae sporte para jack en su paquete "alsa-plugins". En el PPA de Motin hay una versión de los alsa-plugins con soporte para Jack que nos ahorraría tener que recompilar. Además tendríamos que crear un archivo .asoundrc con cierto código para que esto funcionase. Algunos lo hacen, parece que con mejor resultado, a través del jack audio sink de pulseaudio.

Estos métodos son parches. Ahora lo podemos tener de forma nativa por medio de un plugin aparecido hace unos meses . Manos a la obra:

Necesitamos estos paquetes:

build-essential
git-core
autoconf
automake
libtool
libasound2-dev
libjack-dev
libsamplerate0-dev
libssl-dev

Desde una terminal en el directorio por defecto (/home/usuario):

(Las dos primeras líneas son opcionales; por una cuestión de orden, conviene tener un directorio destinado a los programas en código fuente)

mkdir fuentes
cd fuentes
git clone [url=git://repo.or.cz/libflashsupport-jack.git]git://repo.or.cz/libflashsupport-jack.git[/url]
cd libflashsupport-jack
sh bootstrap.sh
make
sudo make install

Los puertos de salida de flash se autoconectan a los system_playbacks

Otra opción es "pescar" el archivo del directorio /tmp, traerlo a home, chequear los permisos y abrirlo con nuestro reproductor favorito.

Mixxx

Hace falta portaudio19 con capacidad para jack, cosa que no tiene el que trae ubuntu/ubuntustudio karmic. Si hemos añadido el PPA de Motin, como vimos para el caso de amarok, actualizamos el paquete libportaudio2 a la versión "+withjack2" (v. Nota 1).

En Mixxx, vamos a Options->Preferences y elegimos "Jack Audio Connection Kit" como Sound API.


Beneficios colaterales

Gracias a esta versión de portaudio, tenemos soporte Jack para Mscore :D.


Deseos inclumplidos y soluciones prácticas

TOTEM:

Se supone que debería fucnionar con el hack a gstreamer que hace funcionar a rhytmhbox y a exaile pero no hay manera. No me importa mucho porque tengo VLC, Kaffeine o mplayer / gmplayer.

FIREFOX plugins :

No he conseguido que ninguno funcione con jack dentro de firefox. ¿Alguna idea? Como alternativa, en Editar, Preferencias, Programas, he optado por abrir los archivos multimedia mediante /usr/bin/vlc. De esta forma los descarga y los abre en vlc externamente de forma automática, incluida la conexión a los system:playbacks.

AGRADECIMIENTOS

No descubro nada. Todo esto ya está escrito y lo he leído en varios sitios. Lo del flash player es a partir de un aviso de Rakarrack Team hace poco en este foro de Hispasonic, con apunte oportuno de lgarrido, pues me estaba volviendo loco con las sugerencias de Raka. En general, gracias a todos los que lo han explicado y a los que lo hacen posible con su código.

Nota 1: Creo que esto no tiene nada que ver con Jack1 (versiones 0.xxx.x) o Jack2 (versiones 1.9.x). Parece un número que se ha quedado colgado atrás.

http://www.semicorchux.blogspot.com
"Ayuda para hacer música con Linux"
Subir
#2 por monon el 17/01/2010
Pablo realmente eres una "caña". No paras ¿Eh?
Sique así !! =D> =D>
Subir
#3 por igny el 17/01/2010
Tienes toda la razón monon. Este señor es una caña.

Gracias por tus excelentes aportaciones Pablo.

Un saludo =D>
Subir
#4 por guitman el 18/01/2010
Magnífico post, como todos los haces, Pablo. Enhorabuena.
Me ha interesado especialemente el soporte jack para flash, funciona de lujo.

Ahi va el .deb compilado para ubuntu karmic.

Y de paso agrego mi favrito :

http://moc.daper.net/

Este, como aqualung , ya viene con soporte jack incluído y no hay que hacer nada.

Saludos.
Archivos adjuntos:
Subir
#5 por Ismael Valladolid Torres el 20/01/2010
Se merece que lo saque por Linux AV, si nadie tiene inconveniente. :twisted:

Sígueme en Twitter

Subir
#6 por guitman el 23/01/2010
Ahí va el jackflash para amd64. Compilado en 64Studio/Ubuntu jaunty.
Archivos adjuntos:
Subir
#7 por Pablo_F el 23/01/2010
Gracias guitman.

Ismael, ¡Me parece muy bien! Lo único que tengo que hacer "fe de erratas".

Para VLC, he escrito:

gedit /.config/vlc/vlcrc

Obviamente, debería ser:

gedit /home/usuario/.config/vlc/vlcrc

gedit o cualquier otro editor de texto, claro.
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo