domingo, 25 de marzo de 2012

Servidor multimedia DLNA para Playstation 3 (y otros) usando GNU/Linux

Hola a todos,

Hoy quiero mostraros cómo instalar un servidor multimedia al que podamos acceder desde nuestra PS3 mediante el montaje de una red DLNA, de tal forma que podamos compartir el contenido multimedia de nuestro ordenador personal con nuestra videoconsola o cualquier dispositivo compatible con las redes DLNA.

Vale, pero podríamos preguntarnos, ¿por qué usar un servidor de este tipo pudiendo usar mi servidor Samba que tengo montado? La respuesta es que la PS3 y algunos otros dispositivos están algo capados o no tienen esa función, y no son capaces de conectarse a recursos compartidos por Samba. Así que si montamos un servidor UPnP en una red DLNA, podremos compartir nuestro contenido multimedia con la PS3 y con el resto de dispositivos que puedan acceder a un servidor UPnP.

Bien, ya tenemos claro que tenemos que usar un servidor UPnP, ¿pero qué es eso de UPnP y DLNA? UPnP son las siglas de Universal Plug and Play,  y según la Wikipedia, es "una arquitectura software [...] que de forma independiente al fabricante, sistema operativo, lenguaje de programación, etc. permite el intercambio de información y datos a los dispositivos conectados a una red". En resumen, es un protocolo mediante el cual podemos compartir contenido multimedia entre un servidor que exporte el contenido, y  un cliente que se contecte a ese servidor, el único requisito es que el cliente soporte este protocolo.

Por otro lado, DLNA (Digital Living Network Alliance)  es un estándar que hace uso de UPnP para interconectar los dispositivos con objeto de compartir sus contenidos.

Bueno, pues de entre todos los servidores UPnP que podemos instalar en nuestro sistema GNU/Linux, vamos a usar Mediatomb.  Este es un servidor que permite ambos tipos de servicio UPnP:
  • Servidor UPnP sin Transcoding: el servidor exporta el contenido multimedia sin procesarlo, es decir, sin aplicarle ninguna transformación. De esta forma, el cliente UPnP podrá reproducir solamente aquel contenido que reproduzca de forma nativa.
  • Servidor UPnP con Transcoding: el servidor exporta el contenido codificando on the fly aquellos tipos de ficheros que el cliente no reproduzca de forma nativa.

De entre todos los formatos multimedia con los que suelo trabajar habitualmente, solo hay uno que la PS3 no reproduce de forma nativa, y es el formato MKV. Pero el número de archivos MKV que tengo es tan pequeño que me parece mucho más rentable volver a descargarlos en un formato compatible (por ejemplo avi) que habilitar el Transcoding para este tipo de fichero. Y por si no ha quedado claro, yo sí descargo y comparto contenido por internet, y no precisamente poco ;-)

Así pues, nosotros montaremos el servidor UPnP sin habilitar el Transcoding, puesto que la PS3 reproduce perfectamente y con una configuración sencilla los ficheros multimedia más habituales, que son los que probablemente tendremos en nuestra biblioteca multimedia. Pese a todo, debemos tener claro que es posible reproducir otros contenidos habilitando el Transcoding, eso sí, aceptando las posibles limitaciones de este proceso, como por ejemplo el hecho de no poder pausar o adelantar/retrasar la reproducción, muy habitual en los procesos de transcoding on the fly.

Creo que no es necesario mencionar que como requisito fundamental para que este servidor funcione, consola y servidor deben estar conectados a la misma red local, ¿verdad? ;-)

Bien, para empezar debemos instalar Mediatomb en nuestro sistema Debian GNU/Linux o derivado:

$ sudo aptitude install mediatomb

Una vez instalado, vamos a proceder a configurarlo adecuadamente para nuestra Playstation 3. Por defecto, Mediatomb correrá en modo servicio de tal forma que se ejecutará en el arranque del sistema. Si queremos modificar este comportamiento y habilitarlo bajo demanda, debemos modificar el fichero /etc/default/mediatomb y cambiar la línea NO_START="no" por NO_START="yes".

El fichero que seguro vamos a modificar es /etc/mediatomb/config.xml. 

$ sudo nano /etc/mediatomb/config.xml

Para empezar, buscamos la línea 8 y modificamos ui enabled="no" por ui enabled="yes". De esta forma habilitamos la administración de Mediatomb empleando la herramienta gráfica destinada a ello.

Continuamos modificando la línea 27 en la que sustituimos protocolInfo extend="no" por protocolInfo extend="yes". Así habilitamos el soporte para PS3.

Seguidamente vamos a la línea 45 y modificamos la línea ffmpegthumbnailer enabled="no" por ffmpegthumbnailer enabled="yes", de esta forma conseguimos que el servidor exporte las miniaturas de los archivos.

Por último, debemos descomentar la línea 83 que dice map from "avi" to="video/divx". Según la documentación, así habilitamos el soporte divx para PS3. No estoy seguro de que haga falta, pero ahí queda.

Una vez guardados los cambios en el fichero, reiniciamos el servicio:

$ sudo /etc/init.d/mediatomb restart

Ahora vamos a acceder a la herramienta gráfica para administrar los contenidos que exportará Mediatomb. Abrimos nuestro navegador favorito y escribimos en la barra de direcciones lo siguiente:

http://localhost:49152

Y veremos algo como lo que sigue:


Vemos que en la parte izquierda tenemos dos categorías, Database y Filesystem. Database es una presentación de cómo quedará nuestra biblioteca multimedia en el cliente UPnP, y Filesystem es el navegador de archivos mediante el cual vamos a ir añadiendo nuestro contenido al servidor.

Asi pues, navegamos hasta la primera carpeta que queramos añadir al servidor. Cuando la localicemos, la seleccionaremos y haremos clic en el signo más que se encuentra en la parte superior derecha de la pantalla:


Veremos que a la parte superior izquierda de la pantalla nos sale un escueto mensaje informativo diciendo que nuestra carpeta se está añadiendo al servidor. Una vez añadida, podremos dirigirnos a Database y comprobar que en el árbol de carpetas de nuestra base de datos se encuentra la carpeta que acabamos de añadir:


De esta forma procederemos con todas las carpetas multimedia que queramos añadir al servidor, por ejemplo carpetas que contengan series, música, etc. 

Y como siempre, reiniciamos el servicio Mediatomb. Estrictamente no hace falta después de añadir el contenido multimedia, pero nunca está de más:

$ sudo /etc/init.d/mediatomb restart

Una vez añadido todo nuestro contenido, sólo nos queda ver cómo podemos acceder al servidor desde nuestra Playstation 3. 

Si quisiéramos, por ejemplo, ver en nuestra PS3 el contenido en películas o series que hemos añadido al servidor, nos dirigimos a la sección de vídeo y nos encontraremos con un nuevo elemento llamado Mediatomb:


Y si accedemos a este nuevo elemento, veremos nuestro contenido multimedia estructurado en forma de biblioteca y en forma de árbol de carpetas. Por supuesto queda a nuestro criterio elegir la forma de acceso.

Si por el contrario queremos acceder a la música que hemos añadido, solo tendremos que acceder a la sección de música para tener acceso a toda la biblioteca, pudiendo, por ejemplo, crear listas de reproducción personalizadas.

Y eso es todo amigos. Sin duda una forma sencilla de acceder a nuestra biblioteca multimedia desde la Playstation 3 o desde cualquier dispositivo compatible con DLNA. Sin ir más lejos, si nuestra televisión tiene conexión de red, ya sea cableada o inalámbrica, y tiene soporte para redes DLNA, puede ser una buena candidata a convertirse en un potencial cliente de nuestro servidor UPnP.

Espero que os haya gustado y os haya resultado útil.

Un saludo compañeros ;-)

10 comentarios:

  1. Probado y funcionando.
    Muchas gracias.

    ResponderEliminar
  2. Me alegro mucho Yathedigo, ahora a disfrutarlo que es de lo que se trata ;-)

    Un saludo.

    ResponderEliminar
  3. Muchas gracias. Lo pruebo y comento si funciona también con xbox360.
    Saludos.

    ResponderEliminar
  4. Tony, muchas gracias por explicarlo de forma sencilla. Hasta yo lo he podido instalar :D
    En mi caso quiero hacer accesible el contenido multimedia de mi Ubuntu en un Smart TV, pero cuando comparto directorios me dice:
    Error: could not list directory /home/paco/Documents/Les meues imatges : Permission denied
    Quiero compartir por ejemplo un disco duro adicional: /media/D9DE-DF8C
    o una subcarpeta com mis imágenes:
    /home/paco/Documents/Les meues imatges/a Fotos digitals
    sabes como resolverlo? Gracias!

    ResponderEliminar
  5. @Sergio: Gracias a ti compañero, ¿te funcionó finalmente en Xbox?

    @Loumarfo: De nuevo gracias a ti, para mí es un placer compartir mis "trucos" con todos vosotros, al fin y al cabo es la esencia del Software Libre ;-)

    En cuanto a tu caso, por lo pronto no veo el problema, pero el mensaje resultante es una denegación de permisos a la hora de listar el contenido. ¿Algún problema con los permisos de esas carpetas? Revísalos y comprueba que tu usuario tiene control total sobre dichas carpetas, sobre todo el permiso de ejecución (x). Y si esto no resulta, prueba a darle a la carpeta que quieres compartir permisos de lectura y ejecución para todo el mundo, por ejemplo de esta forma: chmod 755 carpeta_a_compartir.

    Por otra parte, veo que esas carpetas contienen espacios, ¿por qué no probar con una carpeta que no contenga espacios y así descartarlo?

    De primera instancia es lo que se me ocurre, pruébalo y me cuentas, a ver si conseguimos que funcione ;-)

    ResponderEliminar
  6. Excelente, aunque en mi smartTV no me reconoce ninguno de los formatos que le compartí :(

    ResponderEliminar
    Respuestas
    1. Pues ya sabes Larry, te queda habilitar el Transcoding o volver a descargar ese contenido en un formato que puedas reproducir sin problemas (te recomiendo esto segundo xD)

      Eliminar
  7. Te recomiendo la arctic silver 5.Untada entre el disipador y el cpu hace maravillas.

    Saludos Juan

    ResponderEliminar