en software libre, tutoriales

Servidor de musica hogareño en GNU/Linux (II)

En un “post anterior”:http://blog.tomasdelvechio.com.ar/index.php?id=6 contaba como me había surgido la necesidad o ganas de tener un servidor de musica, y como “_mpd_”:http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki -me dejo a gambas- no satisfacía mis necesidades.

“Mauro”:http://bitnegro.blogspot.com/ (Un grosso de los de en serio), me comenta en un almuerzo del laburo, que lo que yo estaba intentando tenia mas que ver con _DAAP_. Que quizá por ese lado me pueda ir mejor en la búsqueda. Y que _mpd_ el lo usa para manejar a distancia un reproductor en otra maquina. Por lo tanto, lo que yo suponía era mas o menos correcto. *Existe software mas apropiado para mi necesidad*.

Obviamente llegue a casa después del trabajo y me puse a investigar.

“DAAP”:http://es.wikipedia.org/wiki/Digital_Audio_Access_Protocol (Protocolo de acceso a audio digital) es un protocolo de nivel de aplicación creado por _Apple_ y usado principalmente para sus _iTunes_. Sin embargo, existe un “OpenDAAP”:http://www.opendaap.org/, el cual tiene reproductores clientes compatibles, como el famoso _Rhythmbox_ de _GNOME_.

Este post sera mucho mas técnico que “el anterior”:http://blog.tomasdelvechio.com.ar/index.php?id=6, así que por momentos se pondrá denso en detalles. Sean pacientes, y cualquier duda consulten.

Recordemos brevemente que mi LAN tenia la siguiente estructura o topología:

!images/RedServerMusical.png!

En la maquina que llamamos *servidor* tengo corriendo un _Ubuntu 9.04 JJ_, así que abrí una consola allí y busque paquetes que contengan el nombre _DAAP_:

bc. $ sudo aptitude search daap
p libnet-daap-dmap-perl – Perl module for reading and writing DAAP structures
p mt-daapd – iTunes-compatible DAAP server
p python-daap – DAAP client implemented in Python
v python2.5-daap –
v python2.6-daap –
p xmms2-plugin-daap – XMMS2 – daap plugin

Resultaba obvio que el paquete buscado era _mt-daapd_, el cual descargue e instale:

bc. $ sudo aptitude install mt-daapd

Para bajar, levantar y reiniciar el servicio, los clásicos:

bc. $ sudo /etc/init.d/mt-daapd stop
$ sudo /etc/init.d/mt-daapd start
$ sudo /etc/init.d/mt-daapd restart

Luego, restaba verificar que el servicio estaba andando. Para ello, desde la Laptop abrir una terminal _bash_, y ejecuté:

bc. $ nmap 10.0.0.102

bc. Starting Nmap 4.76 ( http://nmap.org ) at 2009-07-02 02:28 ART
Interesting ports on 10.0.0.102:
Not shown: 996 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
631/tcp open ipp
3689/tcp open rendezvous

bc. Nmap done: 1 IP address (1 host up) scanned in 0.75 seconds

*OJO*: _Nmap_ no viene instalado por _default_ en _Ubuntu_, deberás instalarlo de la manera que instales software habitualmente en tu distribución.

La cuestión es que *21* y *22* son puertos bien conocidos (_ftp_ y _ssh_ respectivamente), por lo que las opciones eran los otros dos. El puerto *631* es el de servidor de impresora en red. Entonces, en este caso por descarte, el puerto tenia que ser el *3689*, si bien no tenia idea que significaba _rendezvous_.

Lo que sabemos entonces es que *tenemos que conectarnos a la IP 10.0.0.102 y al puerto 3689*. Esto es todo lo que necesitamos 🙂 .

En el cliente (La _laptop_ en el escenario propuesto por mi) abrimos _Rhythmbox_ y vamos al menú *Musica -> Conectar a una compartición DAAP*:

!images/ConexionDAAPenRhythmbox1.png!

Allí nos encontraremos con la siguiente sub-ventana:

!/blog/images/ConexionDAAPenRhythmbox2.png!

Si hacemos click en *Aceptar*, se conecta al servidor _DAAP_, pero como se supone, no hay ningún archivo de musica cargado aun y nos muestra la lista en blanco.

!/blog/images/ConexionDAAPenRhythmbox3.png!

Debemos volver al servidor para ajustar algunas configuraciones.

En particular, debemos ir al archivo _/etc/mt-daapd.conf_ y buscar la siguiente parte (como -root- Administrador del sistema):

bc. #
# mp3_dir (required)
#
# Location of the mp3 files to share. Note that because the
# files are stored in the database by inode, these must be
# in the same physical filesystem.
#

bc. mp3_dir = /mi/directorio/de/musica

Cambiar */mi/directorio/de/musica* por la ruta absoluta (completa) a la carpeta de musica correspondiente en tu sistema. (En mi caso como ejemplo seria _/home/tomas/Musica_)

Detalle 1: Conviene que la biblioteca de musica tenga algún tipo de normalización, como que la primer carpeta sea autor, las subcarpetas sean discos y los archivos allí alojados sean temas musicales. Si se tiene otra estructura, hay que buscar en las preferencias de _Rhythmbox_ a ver si dicho esquema esta contemplado:

bc. Musica/
|
+—> La Renga/
|
+—> Bailando en una pata/
|
+—> Tema 1.mp3
+—> Tema 2.mp3

+—> Tema n.mp3

Detalle 2: En principio, la carpeta de musica debería estar en el mismo disco que el servidor DAAP.

Reiniciar el servicio en el servidor con:

bc. $ sudo /etc/init.d/mt-daapd restart

Veremos como _DAAP_ realiza una exploración y va cargando los temas de nuestra biblioteca.

En el programa _Rhythmbox_ del cliente, desconectar y volver a conectar la conexión DAAP. Si todo salio bien, el reproductor debería cargar uno a uno todos los temas por autor y disco.

Un comentario adicional: No hay un soporte por _default_ de todos los formatos de audio, sino de algunos formatos (.mp3,.m4a,.m4p,.ogg,.flac,.mpc). A mi no me causo problemas por tener la gran mayoría en mp3, pero mirando el archivo de configuración vemos que se pueden agregar codecs. Quedara como algo pendiente a ser probado.

Por ultimo, si cargamos nuevos archivos a la colección, no resta mas que reiniciar el servicio, y el servidor hará al inicio un reescaneo de archivos, cargando los nuevos.

Si nos conectamos con el reproductor nuevamente, veremos los nuevos temas musicales.

Eso es todo por ahora. Listening!

Loading Facebook Comments ...

¿Algo para decir?

Comentario

  1. Hay un tema con este post, quedo medio obsoleto desde que descubri que una vez instalado mt-daapd, podes acceder a una interfaz via firefox. Generalmente es http://localhost:3689 (Ojo, localhost si estas en la PC en que instalaste el server, sino se reemplaza localhost por el numero de ip que corresponda)

Loading Disqus Comments ...