miércoles, 19 de febrero de 2014

Streaming de audio en Ubuntu (Icecast2 + Ices2)

Este año estamos detrás de un proyecto para un museo en el que queremos crear audioguías a través del teléfono móvil. El concepto se basa en recibir en el móvil un streaming de audio de la obra de arte que el usuario puede tener delante en ese momento. Este streaming sólo se emite a demanda a través de una red local y el contenido no está disponible fuera de dicha red local.

Mediante códigos QR el usuario realizaría una fotografía de éstos y directamente en su móvil se accedería al streaming correspondiente a esa obra.

Como punto de partida utilizaremos, bajo Ubuntu, la pareja Icecast2 e Ices2. No vamos a hacer una retransmisión en directo con nuestro streaming. En principio, sólo emitiremos una playlist que podrá ser "sintonizada" desde cualquier dispositivo que se encuentre en nuestra red.


Icecast2 es una aplicación de servidor para streaming de Ogg Vorbis (.ogg) y MP3 (.mp3). Ices2 será el complemento que creará el flujo de audio o stream de audio en el servidor. 

La instalación de ambos paquetes puedes realizarla a través del comando:

sudo apt-get install icecast2 ices2

Comenzando por configurar Icecast2...


  1. Edita el archivo icecast.xml mediante sudo gedit /etc/icecast2/icecast.xml
  2. Busca las etiquetas "source-password" y el "admin-password" en la sección de "<authentication>" y establece tú la contraseña que estimes. source-password es la contraseña utilizada para conectarse al servidor Icecast2. El admin-password es la contraseña que se utilizará para el acceso a la interfaz web de Icecast2 (http://localhost:8000/admin). Una recomendación, deja ambas contraseñas con el mismo valor, más tarde podrás cambiarlas y ponerlas diferentes. Busca también <hostname> y cambia de localhost a la ip de tu servidor.

  3. Ahora debes ir a editar otro archivo de configuración de Icecast2, hazlo con sudo gedit /etc/default/icecast2. Una vez abierto, busca la línea que contenga “ENABLE=false” y pon la variable "ENABLE=true". Guarda y cierra el archivo.

  4. Por ahora, ya tendríamos instalado y configurado básicamente el servidor Icecast2. Puedes iniciarlo tecleando sudo /etc/init.d/icecast2 start, o bien, sudo service icecast2 start. Con esto iniciaremos el demonio de Icecast2. 
  5. Para probar que el servidor está operativo, abre en el navegador la dirección “http://localhost:8000” en la barra de direcciones para probar la configuración. Te aparecerá una página de administración del servidor Icecast2, si pulsas sobre el enlace de "Administración" te pedirá usuario y contraseña. Éstos son los que has configurado en el paso 2.

Configuración de Ices2
  1. En primer lugar debes crear tres carpetas para que Ices2 pueda funcionar correctamente, utiliza los siguientes comandos.
    sudo mkdir /var/log/ices (lugar para el fichero log)
    sudo mkdir /etc/ices2 (lugar para los ficheros de configuración)
    sudo mkdir /etc/ices2/music (lugar para los archivos de música)

  2. A continuación, vamos a crear el archivo de configuración específico de Ices2. Lo haremos tomando como base un fichero de configuración de ejemplo que el propio Ices2 nos ofrece. Este fichero ejemplo se encuentra en la carpeta /usr/share/doc/ices2/examples. En concreto, nos fijaremos en el fichero con nombre ices-playlist.xml. Debemos copiar este fichero a la carpeta que hemos creado para ices2 en /etc. El comando sería 
    sudo cp /usr/share/doc/ices2/examples/ices-playlist.xml /etc/ices2
  3. Una vez lo hayas copiado, edítalo con gedit o nano. 

  4. Realiza los siguientes cambios:
    a) Cambia el numero "0" a "1" en la sección “<background>0<background>”. 
    b) Edita la sección “<metadata>...<metadata>” para personalizar los datos de tu emisora.
    c) Edita “<param name="file">/etc/ices2/playlist.txt</param>” para incluir la ruta a tu lista de reproducción. 
    d) Edita “<password>hackme</password>” para incluir constraseña orígen desde Icecast2. Esta contraseña es la que pusiste cuando configuraste Icecast2.
    e) Modifica <mount> para indicar el punto de montaje de tu playlist, puedes poner /emision.ogg por ejemplo. Este valor será el que las máquinas clientes deberán poner en la dirección que tendrán que utilizar para acceder al stream. (http://ip_servidor:8000/emision.ogg)
Indica la música que quieres reproducir...
  1. Mueve a la carpeta /etc/ices2/music todos los archivos ogg que desees incluir en tu playlist.
  2. Crea un archivo nuevo en /etc/ices2 con el nombre playlist.txt
  3. Edítalo y añade todas las rutas absolutas de los archivos que quieras que formen parte de tu playlist. Guarda y cierra el archivo.4
  4. Ahora, lanza ices2 para crear el flujo de audio. Hazlo con el comando:
    sudo ices2 /etc/ices2/ices-playlist.xml
  5. Ve al navegador y comprueba a través de http://localhost:8000 que se está emitiendo tu lista de música. Para probarlo en una máquina cliente, abre el navegador en ella y pon la dirección http://ip_servidor:8000/punto_montaje y podrás escuchar lo que en ese momento se está emitiendo. (para nuestro ejemplo podría ser http://ip_servidor:8000/emision.ogg)
 Espero que os haya sido útil este post.

No hay comentarios: