Imprimir

Servidor UPnP Media Server (DLNA) en Linux

Los protocolos de red UPnP (Universal Plug and Play), definidos por el UPnP Forum, garantizan la interoperatividad entre PCs conectados en red, y los UPnP AV (UPnP Audio and Video o UPnP multimedia), supervisados por el DLNA, establecen especificaciones para que los dispositivos digitales DLNA compatibles (ordenadores, cámaras de vídeo, televisores, etc.) puedan conectarse a una red y compartir sus datos con otros dispositivos.

El protocolo UPnP AV se implementa con arquitectura cliente-servidor, por lo que necesita:

  • un servidor UPnP AV (o media server), que exporta uno o más directorios que contienen archivos de imagen, música o vídeo. Además de compartir directorios el servidor UPnP AV puede realizar o no transcoding:
    • si el servidor UPnP AV no realiza transcoding sólo veremos los ficheros de vídeo que el cliente reproduzca de forma nativa.
    • si el servidor UPnP AV realiza transcoding se encargará de transformar on the fly la fuente original (por ejemplo DivX) a un formato que el cliente pueda reproducir (por ejemplo MPEG-2).
  • un cliente UPnP AV (o media player), que auto-detectará los servidores UPnP AV presentes en la red local, tendrá acceso a los directorios compartidos y podrá navegar por ellos y reproducir los archivos de imagen, música o vídeo. Probablemente los clientes UPnP AV más utilizados son las vídeo-consolas, como la Playstation 3. Al encenderla detectará automáticamente los servidores multimedia DLNA ubicados en la red local y los mostrará en Foto, Música y Vídeo.

    PS3 media server

Hay numerosos servidores UPnP AV en Linux:

Equivalencias en Windows: Nero Media Home, Windows Media Connect .

  • uShare (ushare.geexbox.org, paquete ushare): servidor UPnP AV desarrollado por la distribución GeeXboX. No realiza transcoding. Para instalarlo con APT añadiremos el repositorio de GeeXboX a /etc/apt/sources.list:
    # Repositorio GeeXboX
    deb http://www.geexbox.org/debian/ unstable main

    Para configurar uShare editaremos el archivo /etc/ushare.conf:

    # Directorio compartido
    USHARE_DIR=/home/francis/videos
     
    # Usar perfil DLNA (necesario para PlayStation3)
    ENABLE_DLNA=yes

    Para terminar, reiniciamos el daemon:

    # /etc/init.d/ushare restart
  • GMediaServer (gnu.org/software/gmediaserver/, paquete gmediaserver): servidor UPnP AV desarrollado por el GNU. No realiza transcoding. El archivo de configuración es /etc/default/gmediaserver:
    # Iniciar el daemon
    GMEDIASERVERRUN=yes
     
    # Argumentos
    # --profile=ps3 Perfil para la PlayStation 3
    # --file-types:unknown Compartir todo, incluso archivos de formato desconocido
    GMEDIASERVERARGS="--profile=ps3 --file-types=unknown"
     
    # Directorio compartido
    GMEDIASERVERDIR="/home/francis/videos"

    Una vez configurado reiniciamos el demonio:

    # /etc/init.d/gmediaserver restart
  • MediaTomb (mediatomb.cc, paquete mediatomb): servidor UPnP AV que sí realiza transcoding. El archivo de configuración con los parámetros para el script de inicio es /etc/default/mediatomb:
    # Iniciar el daemon
    NO_START="no"

    El archivo principal de configuración es /etc/mediatomb/config.xml. En este punto, sólo veremos los .mpg (el resto de archivos aparecerán como Datos no compatibles), de manera que habilitaremos el soporte para PS3 sustituyendo la línea:

    <protocolInfo extend="no"/><!-- For PS3 support change to "yes" -->

    por:

    <protocolInfo extend="yes"/><!-- For PS3 support change to "yes" -->

    y conseguiremos ver los .wmv.

    Activaremos el soporte para DivX para la PS3 sustituyendo la línea:

    <!-- <map from="avi" to="video/divx"/> -->

    por:

    <map from="avi" to="video/divx"/>

    Para ver los .avi habilitaremos el transcoding sustituyendo la línea:

    <transcoding enabled="no">

    por:

    <transcoding enabled="yes">

    Y añadiremos esto:

    <transcode mimetype="video/x-msvideo" using="ffmpeg-sh"/>

    Y esto:

    <profile name="ffmpeg-sh" enabled="yes" type="external">
        <mimetype>video/mpeg</mimetype>
        <accept-url>yes</accept-url>
        <first-resource>yes</first-resource>
        <agent command="ffmpeg-tr.sh" arguments="%in %out"/>
        <buffer size="10485760" chunk-size="131072" fill-size="5242880"/>
    </profile>

    Y además crearemos el archivo /bin/ffmpeg-tr.sh (y le daremos permisos de ejecución), cuyo contenido es:

    #!/bin/sh
    exec ffmpeg -i "$1" -b 2000k -me zero -f mpeg -ar 48000 -ac 2 - > "$2"

    Una vez configurado reiniciamos el demonio:

    # /etc/init.d/mediatomb restart

    MediaTomb dispone de una interfaz web con la que podremos configurar los directorios compartidos, a la que podemos acceder en la dirección http://127.0.0.1:49152 (MediaTomb utilizará el primer puerto libre comenzando por 49152), obteniendo:

    MediaTomb

9 Comentarios en “Servidor UPnP Media Server (DLNA) en Linux”

  • Kr0n0 dice:

    Muy util, sobre todo la parte de la configuración del .xml, gracias

  • Ver videos desde mi otra pc dice:

    Tengo mediatomb instalada en mi red PC A con la dirección http://192.168.1.2:49152

    Ahora quiero ver los videos desde mi PC B pero no me deja ver los videos en mi PC B
    porque es que no puedo ver los videos en mi PC B ?
    con la dirección http://192.168.1.2:49152 que debo hacer para que funcione?

  • [...] La PS3 reproduce muchos tipos de archivos, pero tiene problemas con XVid y no reproduce MKV. Como soporta el protocolo UPnP, es posible acceder a servidores multimedia que soporten este protocolo, y en Linux existen varios que se describen con detalle en este post de Estréllate y Arde. [...]

  • juliandola dice:

    Curiosamente he creado el base de datos con mediatomb, y se ve perfectamente en miip:49512…peeeero no me hace streaming. He activado upnp en mi linksys con dd-wrt 2.4, y no muestra que se abra el puerto pertinente. Si digo de ver un video, primero lo descarga y después lo reproduce, luego streaming no hace. Alguien puede aportar algo, para hacerlo en una red local de pcs???.

  • avaloncio dice:

    La página web del puerto 49152 es para gestión de los directorios que se van a compartir y la manera en que se van a actualizar.

    Para acceder a los vídeos que estéis sirviendo necesitáis un reproductor upnp dlna, como podéis leer en el articulo, una ps3 os valdría pero si no es el caso, seguro que hay reproductores que se puedan conectar a un mediatomb… (aunque yo sigo peleándome con WMP11 y aun no he conseguido reproducir nada, pero por lo que he visto Nero tiene un programa de pago para acceder a servidores multimedia)

  • agradecido dice:

    Con una LG 42LE8500 y su software actualizado por red a mí me funciona de lujo, todo y con muchos formatos. Ubuntu 10.04 Ethernet 100 Mb/s
    Un matroska que he puesto a servir (16 GB) lo reproduce mal, no sé si por la red o porque no puede con eso la GPU de la tv (siempre tiene una zona de pixels en algún lado). Un 720p de 2GB (avi-xvid), perfecto. Las fotos y el audio muy bien.
    Muchas gracias por tu aportación.

  • Painkiller British Steel dice:

    Hola, yo tengo una PS3 y el año pasado la usé perfectamente con Ushare y el tema que tengo ahora es que ve los dos directorios, donde tengo los mp3 y en el otro donde están los videos, y cuando en la play le pongo para copiarlos en los dos me dice:
    No hay títulos que puedan ser copiados
    y no entiendo porqué si ambas carpetas tienen contenidos.
    Te paso mi /etc/ushare.conf para que lo veas:

    # /etc/ushare.conf
    # Edit this file with ‘dpkg-reconfigure ushare’
    # Configuration file for uShare

    # uShare UPnP Friendly Name (default is ‘uShare’).
    #USHARE_NAME=uShare
    USHARE_NAME=Linux

    # Interface to listen to (default is eth0).
    # Ex : USHARE_IFACE=eth1
    #USHARE_IFACE=eth0
    USHARE_IFACE=wlan0

    # Port to listen to (default is random from IANA Dynamic Ports range)
    # Ex : USHARE_PORT=49200
    USHARE_PORT=

    # Port to listen for Telnet connections
    # Ex : USHARE_TELNET_PORT=1337
    USHARE_TELNET_PORT=

    # Directories to be shared (space or CSV list).
    # Ex: USHARE_DIR=/dir1,/dir2
    USHARE_DIR=/home/ozymandias/Videos,/home/ozymandias/Música

    # Use to override what happens when iconv fails to parse a file name.
    # The default uShare behaviour is to not add the entry in the media list
    # This option overrides that behaviour and adds the non-iconv’ed string into
    # the media list, with the assumption that the renderer will be able to
    # handle it. Devices like Noxon 2 have no problem with strings being passed
    # as is. (Umlauts for all!)
    # Options are TRUE/YES/1 for override and anything else for default behaviour
    USHARE_OVERRIDE_ICONV_ERR=

    # Enable Web interface (yes/no)
    USHARE_ENABLE_TELNET=

    # Use XboX 360 compatibility mode (yes/no)
    USHARE_ENABLE_XBOX=

    # Use DLNA profile (yes/no)
    # This is needed for PlayStation3 to work (among other devices)
    USHARE_ENABLE_DLNA=yes

    Agradecería mucho tu ayuda.
    Desde ya muchas gracias y perdón por la molestia.
    Saludos

  • josean dice:

    Dejo un enlace explicando la instalación de miniDLNA en Linux. Lo he probado con un televisor Samsung serie 6, y funciona estupendamente. Muy recomendable:

    http://netpatia.blogspot.com/2011/03/setup-your-own-dlna-server.html

  • pjkl dice:

    Hola:
    Quisiera hacer una pregunta. ¿Hay alguna posibilidad de descargar los contenidos que se muestran a través del servidor UPnP en el cliente?
    Gracias

Deja un comentario