Darwin Streaming Server para Dispositivos Móviles

Esta receta ilustra cómo configurar el servidor RTSP Darwin Streaming Server en un sistema Debian GNU/Linux. Se ha configurado para que un dispositivo móvil pueda recibir flujo RTSP sin problemas.

Ingredientes

Instalación de Darwin Streaming Server (DSS)

    Una vez descargado y descomprimido el installer del DSS podemos empezar a instalarlo, pero previamente hay que crear un usuario y un grupo qtss que utilizará el servidor para manejar los archivos de configuración.

    sudo addgroup --system qtss	
    sudo adduser --system --no-create-home --group qtss

    Tras crear este usuario y grupo podemos lanzar el instalador

    sudo ./Install

    Durante la instalación se pregunta sobre el usuario y la contraseña para la administración del servidor, ya que será accesible desde la
    red a través de una interfaz web a través de estos parámetros.

    Tras finalizar la ejecución del instalador se crean los siguientes archivos:

    • /usr/local/sbin/DarwinStreamingServer (Servidor)
    • /usr/local/bin/PlaylistBroadcaster (Permite crear nuevas listas de reproducción)
    • /usr/local/bin/MP3Broadcaster (Permite crear nuevas listas de reproducción)
    • /usr/local/sbin/streamingadminserver.pl (Interfaz Web)
    • /etc/streaming (Directorio de configuración)
    • /etc/streaming/streamingserver.xml (Configuración por defecto)
    • /var/streaming/logs (Directorio de logs)
    • /usr/local/movies (Directorio de medios)

Configuración y Puesta en funcionamiento de DSS

    Tras la instalación hay que dar permisos de escritura a el archivo de configuración, ya que puede variar durante la ejecución.

    sudo chmod +r /etc/streaming/streamingserver.xml

    Ahora estamos en condiciones de lanzar el servidor (nótese que se ha instalado en /usr/local/sbin, así que debe lanzarse como superusuario)

    sudo DarwinStreamingServer -p 5554 -D -c /etc/streaming/streamingserver.xml

    -p puerto por defecto para RTSP
    -D mostrar información por la salida estándar
    -c para indicar el archivo de configuración del servidor
    -h help
    (sudo DarwinStreamingServer -h muestra una descripción de los parámetros)

    A continuación podemos lanzar la interfaz web por medio del script en Perl streamingadminserver.pl.

    sudo streamingadminserver.pl

    Se pedirá login con el usuario y contraseña introducidas en la instalación, y posteriormente se configurarán otros parámetros básicos. Una vez introducidos ya estamos en disposición de crear listas de reproducción a partir de archivos.

    También es posible crear listas de reproducción via línea de comandos por medio del comando PlaylistBroadcaster.

Crear listas de reproducción

    La interfaz web que ofrece es lo suficientemente simple como para no deternenos en ella, sin embargo no ocurre lo mismo con la codificación
    de los archivos multimedia.

    Los archivos multimedia deben contener información sobre cómo se debe realizar el streaming (hinting), y además deben tener una calidad
    adecuada al dispositivo que lo va a reproducir, por lo que debemos coficar y 'firmar' cada archivo que queremos servir.

    Cabe destacar que el DSS solo admite formatos 3gp, mov, mp4 y mp3, por lo que es posible que haya que recodificarlos (ffmpeg, mencoder).

    A continuación se muestra un ejemplo adaptado a dispositivos móviles de codificación y 'firma' de un .mp3 y de un .avi. Para ello se utiliza ffmpeg y MP4Box (de la suite gpac).

    ffmpeg -i test.mp3 -ar 8000 -ac 1 -ab 12.2k testMono8000Hz.3gp
    MP4Box -hint testMono8000Hz.3gp
     
    ffmpeg -i test.avi -b 30 -r 12 -ar 8000 -ab 12.2k -ac 1 test52k.3gp
    MP4Box -hint test52k.3gp

    Una vez codificados los archivos solo hay que ubicarlos en el directorio donde se hayan dispuesto las 'movies' y listo, ya se pueden añadir a las listas de reproducción, que serán accesibles por medio de la url 'rtsp://ip_servidor/nombreListaReproducción'.

PlaylistBroadcaster

    Si queremos crear una lista de reproducción sin utilizar la interfaz web deberemos crear una serie de archivos de configuración; éstos archivos deben pertenecer al grupo qtss, de lo contrario no aceptará la lista. A continuación se muestran los pasos a seguir para poner en marcha una lista de reproducción vía línea de comandos.
    • 1.- Crear un directorio para la lista.

      sudo mkdir /var/streaming/playlists/plTest

    • 2.- Crear un archivo con extensión.playlist que contenga la ubicación absoluta de cada 'movie' a reproducir con un peso asociado.(no olvidar la línea *PLAYLIST*)
      *PLAY-LIST*
      #
      #Created By AVISMI.MediaServer
      #
      "/usr/local/movies/testMono8000Hz.3gp" 5
      
    • 3.- Crear un archivo .config. Este archivo establece los parámetros de la lista de reproducción. (PlaylistBroadcaster -h, muestra una descripción del archivo de configuración)
      playlist_file /var/streaming/playlists/plTest/plTest.playlist
      play_mode sequential_looped
      destination_ip_address 127.0.0.1
      #broadcast_name "plTest"
      sdp_file "/var/streaming/playlists/plTest/plTest.sdp"
      destination_sdp_file "plTest.sdp"
      broadcast_SDP_is_dynamic enabled
      pid_file "/var/streaming/playlists/plTest/plTest.pid"
      

      Nótese que no se han definido los archivos .sdp ni .pid; ésto se debe a que mediante la opción -f se le dice a DSS que genere de forma automática el archivo .sdp (.pid es generado automáticamente por DSS).

    • 4.- Lanzar el PlaylistBroadcaster

      PlaylistBroadcaster -a -t -f /var/streaming/playlists/plTest/plTest.playlist

      -a asocia el broadcast al servidor
      -f generar el sdp automáticamente
      -t envia por TCP el broadcast al servidor

Referencias