Mi Radio con icecast en gentoo. parte I
En la insitiución donde trabajo se viene requiriendo configurar un servidor de streaming para tener una radio en linea, q será alimentado desde una tarjeta de sonido al cual estará conectado el equipo de radio, una arquitectura interesante, por lo que me puse a investigar y como se dice una imagen vale mas q mil palabras, me encontre con esta imagen que resume todo lo q deseo hacer:

Imagen: http://federicosayd.wordpress.com/2007/10/12/una-radio-en-linux/
Bueno yo ya habia trabajado con shoutcast, el problema es que nunca le encontre un cliente para que alimente al servidor y que corra en linux ademas que no soporta el formato ogg. Por lo que le di una oportunidad a icecast, anteriormente lo habia probado pero tuve problemas para configurarlo, pero esta vez ya me funciona.
En esta parte explicare la configuracion de icecast y de ices, el primero es el servidor y el segundo es el cliente que alimentara a nuestro servidor:
- Instalamos icecast con los USE flags siguientes: “speex ssl theora yp”
# emerge -va icecast
- Configuramos icecast en el archivo /etc/icecast2/icecast.xml
<icecast>
<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>123</source-password>
<relay-password>1234</relay-password>
<admin-user>admin</admin-user>
<admin-password>12345</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=”/” dest=”/status.xsl”/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>4</loglevel>
<logsize>10000</logsize>
</logging>
<security>
<chroot>0</chroot>
<changeowner>
<user>icecast</user>
<group>nogroup</group>
</changeowner>
</security>
</icecast>
- Instalamos ices:
# emerge -va ices
- Configuramos el archivo: /etc/ices2/ices.xml, si bien es cierto este archivo no se crea por defecto, hacemos una copia del archivo ices-playlist.xml:
# cp ices-playlist.xml ices.xml
<?xml version=”1.0″?>
<ices>
<background>0</background>
<logpath>/var/log/ices</logpath>
<logfile>ices.log</logfile>
<loglevel>4</loglevel>
<consolelog>0</consolelog>
<stream>
<metadata>
<name>Radio Santo Domingo</name>
<genre>Musica Variada</genre>
<description>Aun por definir</description>
</metadata>
<input>
<module>playlist</module>
<param name=”type”>basic</param>
<param name=”file”>/etc/ices2/listado.txt</param>
<param name=”random”>0</param>
<param name=”restart-after-reread”>0</param>
<param name=”once”>0</param>
</input>
<instance>
<hostname>localhost</hostname>
<port>8000</port>
<password>123</password>
<mount>/playlist.ogg</mount>
<reconnectdelay>2</reconnectdelay>
<reconnectattempts>5</reconnectattempts>
<maxqueuelength>80</maxqueuelength>
<encode>
<nominal-bitrate>64000</nominal-bitrate>
<samplerate>44100</samplerate>
<channels>2</channels>
</encode>
</instance>
</stream>
</ices>
- Creamos el directorio /playlist.ogg y agregamos los archivos ogg que queremos:
# mkdir /playlist.ogg
- Creamos el listado de los ogg que vamos a reproducir:
# find /playlist.ogg/ -iname “*.ogg” > /etc/ices2/listado.txt
- Iniciamos los servicios:
# /etc/init.d/icecast start
# /etc/init.d/ices start
- Para que arranquen a la hora q inicia nuestro sistema
# rc-update add icecast default
# rc-update add ices default
Para reproducir nuestro streaming desde un navegador vamos a:
http://ip_server:8000/playlist.ogg.m3u
o sino en http://ip_server:8000 nos aparecera un link hacia ese archivo que lo reproduciremos en mi caso con amarok.