Creando una emisora de radio online

Hoy en día, el acceso a Internet nos brinda una gran cantidad de servicios: descarga de audio, vídeo, documentos; conexión remota con otros equipos, comercio electrónico, videoconferencias, reproducción en directo de todo tipo de contenidos… Algo que lleva tiempo entre nosotros son las radios online: emisoras de radio que podemos escuchar también a través de la red. Sin embargo, este concepto no se centra exclusivamente en las radios tradicionales, sino que también comprende cualquier tipo de emisión de audio que se propague a través de la red.

¿Tienes ganas de crear tu propia emisora? Veamos una de las muchas recetas que podemos usar.

Ingredientes

  • Conexión a Internet: elemental, mi querido Watson.
  • Sistema operativo GNU/Linux: hay soluciones para otros sistemas, pero en este artículo nos centraremos en la libertad ;-)
  • Programas:
    • ezstream: cliente que va a enviar los archivos de audio al servidor para que los emita.
    • icecast: servidor que «lanzará» a la red lo que le mande el cliente.

Pasos

A pesar de que este artículo puede resultar algo largo, son realmente tres los pasos a seguir:

  1. Instalación y configuración del servidor: Icecast
  2. Creación de una lista de reproducción.
  3. Instalación y configuración del cliente: ezstream

En este artículo editaremos ficheros de texto para cambiar la configuración de los programas, así que es más que recomendable que realices copias de seguridad de los mismos y sepas algo sobre el uso de la línea de comandos (¡huid, amantes de las ventanas!). También es necesario saber instalar programas en la distribución que uses.

Icecast

En toda estación de radio necesitamos dos partes: una que se encargue de proporcionar los documentos sonoros (música, voz…), y otra que se preocupe de difundirlos a la red. De esta última parte es de la que se encarga Icecast: servidor de difusión que soporta los formatos MP3 y Ogg Vorbis.

Instalación

Para casi todas las distribuciones populares (Debian, Fedora, Arch Linux…) existen ya paquetes listos para instalar de forma cómoda desde el administrador de paquetes correspondiente, así que no será ninguna experiencia traumática.

Configuración de Icecast

Todas las opciones y cambios que queramos hacerle a Icecast será a través de su archivo de configuración: /etc/icecast.xml. No es más que un fichero de texto (podemos abrirlo con cualquier editor) que podremos modificar para que el comportamiento de Icecast se adapte a nuestras necesidades.

Para una configuración básica, nos fijaremos en los siguientes elementos:

  • location: si queremos poner el lugar desde el que emite nuestra radio.
  • admin: dirección de contacto del administrador de la emisora.
  • hostname: IP o nombre usado para el streaming.
  • source-password: contraseña que usará el cliente (ezstream en nuestro caso).
  • admin-user: nombre del usuario que será administrador de Icecast.
  • admin-password: contraseña para la administración de icecast.
  • port: puerto que escuchará Icecast

Una ejemplo de configuración podría ser:

<icecast>
    <location>Mi casa</location>
    <admin>yomando@micasa.es</admin>

    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <threadpool>5</threadpool>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <burst-on-connect>1</burst-on-connect>
        <burst-size>65535</burst-size>
    </limits>

    <authentication>
        <source-password>contraseña-a-usar-por-ezstream</source-password>
        <admin-user>jefazo</admin-user>
        <admin-password>contraseña-del-jefazo</admin-password>
    </authentication>

    <hostname>localhost</hostname>

    <listen-socket>
        <port>8000</port>
    </listen-socket>

    <fileserve>1</fileserve>

    <paths>
        <basedir>/usr/share/icecast</basedir>
        <logdir>/var/log/icecast</logdir>
        <webroot>/usr/share/icecast/web</webroot>
        <adminroot>/usr/share/icecast/admin</adminroot>
        <alias source="/" destination="/status.xsl"/>
    </paths>

    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
        <loglevel>3</loglevel>
        <logsize>10000</logsize>
    </logging>

    <security>
        <chroot>0</chroot>
        <changeowner>
            <user>nobody</user>
            <group>nobody</group>
        </changeowner>
    </security>
    
</icecast>

Tenéis una explicación completa de cada sección del archivo de configuración en la web oficial.

Ejecución de Icecast

Tras configurarlo, ya sólo nos queda ejecutar el servidor. Desde un terminal podemos hacerlo tal que así:

$ icecast -c /ruta/al/fichero/icecast.xml

En sistemas con systemd lo lanzaríamos de esta manera: $ sudo systemctl start icecast

En la consola veremos algo como:

[2013-10-31  23:43:15] INFO main/main Icecast 2.3.3 server started

Para saber si ha habido algún error, podemos consultar el fichero /var/log/icecast/error.log

A partir de ahora, tendremos disponible una web para comprobar el estado de Icecast y un panel de administración web accesible desde, en nuestro ejemplo, http://localhost:8000

Pantalla de estado de Icecast

Si vamos a la parte que pone Administration y nos identificamos como jefazo y contraseña contraseña-del-jefazo (siempre siguiendo nuestro ejemplo), accederemos al panel de administración:

Administración web de Icecast

Lista de reproducción

Antes de continuar, vamos a necesitar crear una lista con todas las canciones que nos interesa emitir. Esta lista de reproducción es la que le daremos a ezstream. ¿Cómo crearla? Es muy sencillo, ya que no es más que un fichero de texto que contiene la ruta completa a los ficheros de audio, una línea por fichero. Por ejemplo:

/home/pepito/mp3/artistazo-cancion-1.mp3
/home/pepito/mp3/la-flamenca-cancion-4.mp3
/home/pepito/mp3/no-somos-dignos-a-me-me-gustas-tu.mp3

Si no quieres ir metiendo una a una, podrías crear una rápidamente de esta manera:

$ find /directorio/de/música/ -name "*.mp3" > /directorio/de/lista-de-reproducción.m3u

El comando anterior busca todos los ficheros .mp3 que hay en la carpeta /directorio/de/música/ y los guarda en un fichero llamado lista-de-reproducción.m3u.

No importa la extensión del archivo. m3u lo he usado por nostalgia, ya que era (y sigue siendo) el formato que usaba Winamp para las listas de reproducción de MP3. Más tarde acabarían adoptándolo muchos reproductores.

ezstream

¡No te me duermas! Ya queda poco. Hasta ahora hemos visto cómo configurar y lanzar el servidor, pero ¿qué sucede con la música que queremos emitir? Efectivamente, de momento, si alguien quiere conectarse a nuestra radio, recibirá… nada. Démosle algo que llevarse a los oídos. ¡Entra en escena ezstream!

Instalación de ezstream

Si usas alguna de las distribuciones más populares, tendrás paquetes disponibles. En el peor de los casos, siempre podrás compilarlo, pero ésa es otra historia y deberá ser contada en otra ocasión ;-)

Configuración de ezstream

Durante la instalación de ezstream también se copian a nuestro equipo unos archivos de configuración de ejemplo. Para nuestro caso, voy a emitir ficheros MP3, así que tomaremos de base el fichero llamado ezstream_mp3.xml. En Arch Linux está en /usr/share/examples/ezstream; si usas Debian o alguna derivada, lo tendrás en /usr/share/doc/ezstream/examples/

Lo copiamos a donde queramos (para tenerlo más a mano y dejar siempre una copia de seguridad) y comenzamos a modificarlo a nuestro gusto:

  • url: dirección de la emisión. Es el punto de montaje al que se conectarán los reproductores.
  • sourcepassword: es la contraseña que le habíamos puesto a icecast en la sección source-password
  • filename: archivo que contiene la lista de reproducción. Lo hemos creado un poco más arriba, ¿recuerdas?
  • suffle: si activamos la opción (1 para activar; 0 para desactivar) haremos que ezstream envíe el audio a Icecast de forma aleatoria, sin seguir el orden de la lista de reproducción.
  • stream_once: activada (1), reproducirá una sola vez toda la lista de reproducción y luego se cerrará el programa.
  • svrinfopublic: poniendo un 0 haremos que nuestra emisión no se publique en el directorio de páginas amarillas de Icecast.
  • Todas las que empiezan por svrinfo son meramente informativas, no afectan al funcionamiento de la emisión. Por ejemplo:
    • svrinfoname: nombre de la emisión.
    • svrinfourl: dirección web de la emisora.

Veamos un ejemplo completo:

<ezstream>
    <url>http://localhost:8000/radio</url>

    <sourcepassword>contraseña-a-usar-por-ezstream</sourcepassword>
    <format>MP3</format>
    <filename>/home/pepito/music/rock.m3u</filename>
    <shuffle>1</shuffle>
    <stream_once>1</stream_once>

    <svrinfoname>Cógeme la matrícula!</svrinfoname>
    <svrinfourl>http://cogemelamatricula.net</svrinfourl>
    <svrinfogenre>Rock</svrinfogenre>
    <svrinfodescription>Rock everywhere</svrinfodescription>
    <svrinfobitrate>192</svrinfobitrate>
    <svrinfochannels>2</svrinfochannels>
    <svrinfosamplerate>44100</svrinfosamplerate>
    <svrinfopublic>0</svrinfopublic>
</ezstream>

Bastante sencillo, ¿verdad?

Ejecución de ezstream

Con todo ya configurado, sólo nos queda ejecutarlo. Tan fácil como:

$ ezstream -c /ruta/al/archivo/ezstream_mp3.xml

En la consola veremos algo como:

[pepito@mipc ~]$ ezstream -c ezstream_mp3.xml 
ezstream: Connected to http://localhost:8000/radio
ezstream: Streaming ``Barón Rojo - Cuerdas de acero''

Perfecto, parece que marcha ;-)

Reproductores

Después de esta enorme parrafada, estaría bien comprobar si nuestra emisión funciona. Hay gran cantidad de reproductores (también para Windows, Mac, Android, iOS…) para probar que soportan Icecast. En todos ellos, la dirección que hay que darles, siguiendo nuestro ejemplo, sería http://localhost:8000/radio.

  • MPlayer: $ mplayer http://localhost:8000/radio
  • VLC: MedioAbrir ubicación de red y escribir http://localhost:8000/radio
  • Qmmp: Botón + y Añadir URL, o tecla u e introducir http://localhost:8000/radio

Recuerda que donde ponemos /radio, podríamos haberle llamado como quisiéramos en el fichero de configuración de ezstream que acabamos de ver.

Consideraciones finales

En este artículo se explica cómo emitir audio en mp3 tal cual lo tengamos, sin recodificar, es decir, con la calidad original exacta. Si no disponemos de un buen ancho de banda, esto supone un problema, pues a mayor calidad, mayor es el tamaño del archivo y mayor velocidad de subida necesitaremos; por no hablar de nuestros oyentes, que necesitarán también una buena conexión a la red para que la reproducción no se les corte. Reduciendo el bitrate, lograremos reducir su tamaño. SoundConverter es un programa muy útil para ello.

Por simplicidad, todo el artículo se ha basado en usar localhost como dirección del servidor, pero eso habría que adaptarlo a un caso particular. Por ejemplo, si el equipo que tiene funcionando icecast y ezstream es accesible desde la dirección http://miequipomolon.com o http://192.168.0.123, habría que sustituir localhost por esos casos.

Hay más posibilidades para crear una emisoria de radio por Internet desde GNU/Linux. La mayoría de ellas requieren el uso de icecast, pero difieren en el uso de clientes (Darkice, Ices, Mixxx…). La combinación con ezstream me parece de las más sencillas, pero no dejes de investigar el resto de las alternativas.

Recursos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *