Microordenadores - Desarrollos modernos para sistemas retro

Crea una radio online con el servidor de audio streaming Icecast y Ezstream
21 de Julio de 2017

Interfaz de Icecast para gestionar el servidor de audio streaming mediante el navegador

Gracias a Icecast2 y ezstream montar un servidor de audio por streaming en la Raspberry Pi 3 es muy sencillo. Puedes usarlo para retransmitir audio tanto para tu red local como a través de Internet.

Icecast es muy versátil, con él puedes hacer casi todo lo relacionado con distribuir audio por la red. Además tiene un amplio soporte de formatos, estando entre ellos OGG Vorbis, Speex, FLAC, MP3, Midi y Theora entre otros.

En este tutorial voy a usar una Raspberry Pi 3 con OpenBSD, donde instalaré Icecast2, que es el servidor de streaming, y ezstream para enviar la música a Icecast2 y que éste la distribuya.

Aunque seguramente estos programas están en Raspbian (paquetes icecast2 y ezstream), aquí usaré OpenBSD que es el sistema operativo de mi elección, especialmente cuando se trata de servidores. Aparte de ser el único sistema operativo que se preocupa de verdad por la seguridad, por defecto instalará Icecast con chroot y con un usuario sin privilegios. Es UNIX por lo que si tienes experiencia con Linux no debes de tener mucho problema, ya que además dispone de una documentación excelente, y además dispones de un tutorial para instalar OpenBSD en la Raspberry Pi 3.

Una vez instalado OpenBSD y descargado el árbol de ports, instala los programas net/icecast y net/ezstream:

# cd /usr/ports/net/icecast ; make install
# cd /usr/ports/net/ezstream ; make install

Te recomiendo leer las recomendaciones del mantenedor de los paquetes que se encuentran en el directorio /usr/local/share/doc/pkg-readmes/. Aquí mostraré una configuración sencilla para reproducir una lista de música de forma contínua, aunque se pueden hacer muchas más cosas con Icecast.

Configuración de Icecast

El archivo es /var/icecast/icecast.xml. Para probar como funciona simplemente he cambiado las contraseñas admin-password y source-password además de bind-address donde he puesto la dirección de la IP LAN de la Raspberry, que es 192.168.2.121.

Como iniciar Icecast y añadirlo al arranque en OpenBSD

# rcctl enable icecast
# rcctl start icecast
icecast(ok)

Como crear un streaming y meterle música con ezstream

Vienen numerosos ejemplos en el directorio /usr/local/share/examples/ezstream. Yo partiré del que es para mp3, cambiando la contraseña, la url, el nombre del archivo de playlist y demás detalles. Lo llamaré ezstream.xml y estará en el HOME del usuario:

<ezstream>
    <url>http://192.168.2.121:8000/stream</url>
    <sourcepassword>hackme</sourcepassword>
    <format>MP3>/format>
    <filename>playlist.m3u</filename>
    <stream_once>0</stream_once>
    <svrinfoname>My Stream</svrinfoname>
    <svrinfourl>http://www.oddsock.org</svrinfourl>
    <svrinfogenre>RockNRoll</svrinfogenre>
    <svrinfodescription>This is a stream description</svrinfodescription>
    <svrinfobitrate>128</svrinfobitrate>
    <svrinfochannels>2</svrinfochannels>
    <svrinfosamplerate>44100</svrinfosamplerate>
    <svrinfopublic>0</svrinfopublic>
</ezstream>

Además de este archivo necesitarás los archivos mp3 y un playlist.m3u; este último es simplemente un archivo de texto con el nombre de cada archivo mp3 en una línea. Una vez arrancado Icecast puedes inyectar música con ezstream de esta forma: ezstream -c ezstream.xml

Para escuchar la música simplemente ve a la dirección http://192.168.2.121:8000 y en Mountpoint abre el archivo de reproducción desde el navegador, o abriendo ese enlace con un reproductor de música que soporte streaming.

Como retransmitir por Internet

Una vez que esto funcione en la red de área local, lo único que necesitas es redireccionar el puerto 8000 (o el que hayas configurado) en el router hacia la Raspberry Pi. Este proceso depende del router que uses, aquí tienes dos tutoriales:

Enlaces


Contenido relacionado: