Sei sulla pagina 1di 8

CONFIGURACION DE ICECAST CON ICES2 COMO SOURCE

Icescast2 y Ices2
Icecast2, en explicación simple es un servidor de streaming [2] que soporta mp3 y ogg, para crear estaciones de radio o vídeo en la red.
Admitiendo múltiples "estaciones" o puntos de montaje de stream.

Mientras que Ices2, digamos que es el programa cliente que provee a Icecast2 de un stream o flujo de audio, pudiendo ser lanzado
desde estaciones remotas a la que esta instalado y montado el servidor Icecast2. Puede funcionar en modo "live" (en directo) o
reproduciendo una lista de reproducción o playlist. Pero teniendo en cuenta esn este último modo que únicamente reproduce , archivos
en formato "ogg" [3].

Es ideal que el servidor icecast2 este montado en una máquina que disponga de un buen ancho de banda, lo que permitirá mayor nº de
oyentes y puntos de montaje.

Ices2 se podra lanzar desde el local que emites (estudio de la radio, casa, local,etc..) usando un computador con algunas prestaciones
mínimas. Por supuesto, cuanto mayor sea el ancho de banda de conexión a Internet de esa máquina, con mayor calidad podremos
transmitir nuestro streaming.

La instalación en nuestra máquina es tan dificil como ejecutar en consola en modo root, esta orden :
#apt-get install icecast2 ices2 -y

Configurando Icecast2
Accedemos y editamos el fichero de configuración de Icecast2.
Para editar los ficheros que menciono, puedes hacerlo con tu editor de textos preferido, yo en los ejemplos uso "vim".

Adjunto el fichero de configuración, con sus comentarios adjuntos para su fácil comprensión. Hay muchos parámetros no incluidos,
porque para un uso básico no son necesarios, como por ejemplo el uso de servidores relevo (servers relay). En caso de querer usar
opciones avanzadas es mejor leer con detenimiento la documentación oficial en la web de icecast. [4]

NOTA a despistadxs :"Las direcciones IP y el hostname icecast.anarres.net usadas en los ficheros de configuración no existen,
deberán ser cambiadas por las direcciones que vayais a usar"
#cd /etc/icecast2/
#vim icecast.xml

<icecast>
<!--Datos de la localización del servidor, y correo electrónico del administrador-->
<location>Planeta Tierra</location>
<admin>nomada@icecast.anarres.net</admin>

<limits>
<!--nº de oyentes que acepta-->
<clients>200</clients>
<!--nº de estaciones montadas soportadas-->
<sources>2</sources>
<!--nº de hilos comenzados para manejar conexiones clientes-->
<threadpool>5</threadpool>
<!--Tamaño máximo en bytes de un oyente en cola. Un oyente temporalmente puede quedarse "atrás" debido a que hay carga en la red
o mucho "lag". En este caso se monta una cola interna mantenida para cada oyente. Si el valor supera al marcado es desconectado.-->
<queue-size>102400</queue-size>
<!--Dejar por defecto el valor, ya que ese parámetro no se emplea-->
<client-timeout>60</client-timeout>
<!--Tiempo máximo de espera (en segundos) de un oyente con el servidor-->
<header-timeout>60</header-timeout>
<!--Tiempo máximo de espera (segundos) en que el servidor espera trás dejar de recibir un flujo de datos de una emisora o punto de
montaje-->
<source-timeout>60</source-timeout>

<!--Normalmente el cliente tiene el buffer local lleno, antes de recibir el stream. Habilitado a 1, se envia una cantidad de datos de
audio para el stream de un oyente que se une. Dando la sensación de redución del tiempo dearranque del stream por parte del oyente.
-->
<burst-on-connect>1</burst-on-connect>
<!-- Tamaño en bytes enviados (relacionado con el parametro anterior)-->
<burst-size>65535</burst-size>
</limits>

<authentication>
<!-- Contraseña en texto claro, para establecer puntos de montajes. CAMBIAR NO DEJAR LA QUE VIENE POR DEFECTO -->
<source-password>hackme</source-password>
<!-- Usado en el servidor master o maestro como parte de la autentificación cuando un "esclavo" o máquina relevo solicita la lista de
streams para transmitir. -->
<relay-user>relay</relay-user>
<!--CAMBIAR NO DEJAR LA QUE VIENE POR DEFECTO-->
<relay-password>hackme</relay-password>
<!--El username/password usado para todas las funciones de administración. Esto incluye el tener acceso las pantallas de
administración a base de web,etc. -->
<admin-user>admin</admin-user>
<!--CAMBIAR NO DEJAR LA QUE VIENE POR DEFECTO-->
<admin-password>hackme</admin-password>
</authentication>

<!--Direcciones URL, donde añadirán nuestras emisiones a un directorio de radio por Internet-->
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>

<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://radio.autistici.org/update2.php</yp-url>
</directory>

<!-- IP de la máquina que se usará para que se conecten al servidor los distintos puntos de montaje o emisoras y los oyentes.-->
<hostname>260.0.1.10</hostname>

<!-- En caso de que únicamente quieras un único socket de escucha-->


<!--<port>8000</port> -->
<!--<bind-address>127.0.0.1</bind-address>-->

<!-- Si quieres tener múltiples sockets de escucha-->


<listen-socket>
<!--El puerto TCP que usará para aceptar las conexiones cllientes.-->
<port>8000</port>
<!--Dirección de IP opcional que puede ser usada para una tarjeta de red específica.-->
<!-- <bind-address>127.0.0.1</bind-address> -->
</listen-socket>
<!--
<listen-socket>
<port>8001</port>
</listen-socket>
-->

<!--Configuración del punto de montaje o emisora cliente-->


<mount>
<!--Nombre de la emisión->
<mount-name>/radio-suburbia.ogg</mount-name>
<!--Datos de acceso para permitir el establecimiento del punto de montaje-->
<username>source</username>
<!--CAMBIAR LA CONTRASEÑA POR DEFECTO-->
<password>hackme</password>
<!--Nº máximo de oyentes-->
<max-listeners>200</max-listeners>
<!--Más o menos aquí se especifíca un punto de montaje opcional, a la que los oyentes son movidos automáticamente si la fuente se
apaga o pasa el tiempo de conexión al stream. -->
<fallback-mount>/radio-suburbia-2.ogg</fallback-mount>
</mount>

<!--Este flag enciende en icecasts2 el servidor de ficheros de archivos estáticos que pueden ser servidos. Todos los ficheros son
servidos a un "path" especifico.-->
<fileserve>1</fileserve>

<paths>
<!--Hace mención a donde se encuentrán o almacenaran los logs, los ficheros de administración vía web,etc...-->

<basedir>/usr/share/icecast2</basedir>

<!-- Si chroot esta activado, estos paths deberán ser relativos al nuevo root, no al original -->
<logdir>/var/log/icecast2</logdir>
<webroot>/etc/icecast2/web</webroot>
<adminroot>/etc/icecast2/admin</adminroot>
</paths>

<!--Información relativa a los logs generados por icecast2. Uno donde se registran todos los accesos y otro para información
de errores de ejecución,etc...El nivel 4 indica que se registrarán mensajes de aviso, de error, informativos y de depuración.El nivel 3
registra mensajes de error,aviso einformación varia.Así sucesivamente-->
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>4</loglevel>
<!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
</logging>

<!--Esta sección es usada en el caso de que tengamos icecast2 en una jaula securizada "chroot". Si está a 0, indica su no uso-->
<security>
<chroot>0</chroot>
<!--
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
-->
</security>

</icecast>

El siguiente paso a dar, es lanzar es probar la ejecucción de icecast2, pero antes debemos editar otro fichero, que debe quedarse de esta forma.

#vim /etc/default/icecast2
# Fichero de configuración del server.
CONFIGFILE="/etc/icecast2/icecast.xml"

# Nombre o ID del usuario y grupo que puede ejecutar el daemon de icecast2


USERID=icecast2
GROUPID=icecast

# Edita /etc/icecast2/icecast.xml y cambia todas las contraseñas por defecto.


# Después cambia a true para poder ejecutar el daemon en /etc/init.d/
ENABLE=true
Una vez modificado el archivo en cuestión, probamos a lanzar icecast2 y comprobar que esta activo.

#/etc/init.d/icecast2 start
Starting icecast2: Starting icecast2
Detaching from the console
icecast2.
# ps -u icecast2
PID TTY TIME CMD
24036 pts/0 00:00:00 icecast2

Si queremos probar y usar la herramienta de administración de icecast2, abrimos nuestronavegador, y en la barra de direcciones
indicamos según los datos de configuración :

http://260.0.1.10 :8000/admin/

Donde 260.0.1.10 (es la IP donde se encuentra funcionando icecast2,puede ser lógicamente una máquina remota o una local) y 8000 el
puerto que hemos abierto para su uso. Nos pedirá autentificarnos, por lo que tendremos que registrarnos como hayamos indicado en el
fichero de configuración.
Una vez dentro, podremos controlar muchas cosas: clientes y ips donde se conectan, puntos de montaje abiertos , estadisticas,
etc...Una maravilla, en definitiva.

En caso de que queramos usar la administración vía remota y por un canal seguro (cifrado) podemos hacer un tunel ssh. Es
recomendable para que la clave del admin, no viaje en texto claro. Para ello, lógicamente deberemos tener una shell en la máquina
remota a la que accedemos.

#ssh -2 -C -N -L 8080:icecast.anarres.net:8000 nomada@icecast.anarres.net


Nos autentificamos y ya tendremos un canal cifrado abierto...basta después con abrir en nuestro navegador la siguiente url y
autentificarnos :

http://localhost :8080/admin/

Configurando Ices2
Ices2 lo que va a hacer es llamar y montar la emisión o punto de montaje en el servidor icecast2. Este último lo que hará es servir el
streaming de audio a los oyentes que se conecten a ese punto de montaje.

Vamos a crear 2 ficheros, primero uno para emitir en "directo", donde podremos salir en "antena" con micrófonos, poner música en el cd,
usar una mesa de mezcla conectada al auxiliar de nuestra tarjeta de sonido,etc...es decir todo lo que reproduzcamos de sonido en
nuestra computadora saldrá por el streaming.
Y otro fichero, que únicamente reproducira un "playlist" o lista de reproducción previamente creada.
Así cada uno, puede escoger usar indistintamente una forma de emisión u otra.

-Emisión en directo
Creamos el fichero "ices2-live.xml" en nuestra home.
Pongo una configuración básica...si necesitais algo más avanzado, recomiendo leer la documentación oficial en la url de icecast.

$cd /home/nomada
$vim ices2-live.xml
<?xml version="1.0"?>
<ices>
<!-- corre en background?-->
<background>0</background>
<!--donde estan los logs,etc..-->
<logpath>/var/log/icecast2</logpath>
<logfile>ices.log</logfile>
<!-- 1=error,2=warn,3=info,4=debug -->
<loglevel>4</loglevel>
<!-- logfile es ignorado si esta 1 -->
<consolelog>1</consolelog>

<stream>
<metadata>
<name>Radio-Suburbia</name>
<genre>Hacktivist radio</genre>
<description>copyleft music and hacktivist reports</description>
<url>http://suburbia.sindominio.net</url>
</metadata>

<input>
<!--Modulo de sonido que usamos en nuestro kernel, puede ser también oss-->
<module>alsa</module>
<param name="rate">44100</param>
<!-- samplerate 16000 -->
<!--Número de canales -->
<param name="channels">2</param>
<!--Datos del dispositivo de sónido, puede variar según nuestro hardware-->
<param name="device">hw:0,0</param>
<!--A "1",envia información del punto de montaje-->
<param name="metadata">1</param>
<!--Localización de un fichero que creamos para que lo lea el ices2, donde los oyentes podrán ver en sus reproductores, el
nombre de la emisora,web,etc..-->
<param name="metadatafilename">./metadata</param>
</input>

<!--Datos donde se encuentra el servidor icecast, tienenque ser iguales que los que usamos en la configuracióndel icecast2.xml-->
<instance>
<hostname>icecast.anarres.net</hostname>
<port>8000</port>
<username>source</username>
<password>hackme</password>
<mount>/radio-suburbia.ogg</mount>

<!--A 1, le decimos a icecast2, que pasénuestros datos de emisión y conexión en las urls indicadas dentro del fichero
icecast2.xml-->

<yp>1</yp>

<encode>
<!--Datos de la velocidad de transmisión, calidad, y nº de canales empleados.Habrá que modificarlos según el ancho de banda
al que podamos transmitir contra icecast2. Es decir si emitimos a 64 kbs por segundo etc..-->

<minimum-bitrate>48000</minimum-bitrate>
<maximum-bitrate>64000</maximum-bitrate>
<nominal-bitrate>64000</nominal-bitrate>
<!--OJO, SI EN NUESTRA EMISION SE OYE COMO RADIO PITUFO, SE DEBE A ESTE PARAMETRO, DE VELOCIDAD DE
DATOS.POR LO QUE TOCARA AJUSTARLO-->
<samplerate>44100</samplerate>
<!--Calidad de codificación del bitrate. Va de 0 a 10. Interesa tener un valor bajo para conexiones modestas->
<quality>1</quality>
<!--Número de canales de la entrada -->
<channels>2</channels>
</encode>

<!-- Algunos streams intentan reducir el bitrate, reduciendo el número de canales a 1. La conversión de estéreo a mono es
común y cuando esta puesto a 1, indica el nº de canales codificados. En definitiva poner en modo stereo o mono-->
<downmix>1</downmix>

<!--Codificando o recodificando, hay un punto donde se coge el audio y se codifica a Ogg Vorbis. En algunas situaciones un
stream puede requerir que un samplerate bajo alcance un bitrate inferior. La nueva muestra muestra va a modificar los datos de
audio antes de que este entre en el codificador, sin que afecte a otras instancias.Los valores más comunes usados son
48000, 44100, 22050 y 11025-->

<resample>
<in-rate>44100</in-rate>
<out-rate>44100</out-rate>
</resample>

</instance>
</stream>
</ices>

Ahora toca crear el fichero "metadata", el cual incluirá datos referentes a la emisora... ya sabeis esos rotulos, que aparecen moviendose
en la pantalla del Xmms o en Winamp.

$ vim metadata
TITLE=(((Radio Suburbia))) in live!!
ARTIST=
ALBUM=
CONTACT=http://suburbia.sindominio.net

Como software auxiliar,es recomendable usar algún software de mezclas, para manejar los micros, el volumen , etc... Un programa muy
completo es el "gnome-alsamixer". Y no cabe duda, que ello en conjunto con programas para samplear ; reproducción de cd 's , mp3
,ogg ; y todo lo que puedas imaginar, puedes montarte un estudio de radio en directo hasta donde llegue tu imaginación. Más todo lo
que puedas montar a través de la salida auxiliar de tu tarjeta de sonido : sintetizadores, mesas de mezclas, micros,etc...
Ices2 corriendo en modo live, junto a XMMS y Gnome-AlsaMixer

Ya únicamente nos falta, poner en marcha todos los elementos auxiliares para nuestra emisión en directo y lanzar ices2, donde veremos
una información similar:

$ices2 87mhz-live.xml
[2006-09-24 16:19:52] INFO ices-core/main IceS 2.0.1 started...
[2006-09-24 16:19:52] INFO input-alsa/alsa_open_module Opened audio device hw:0,0
[2006-09-24 16:19:52] INFO input-alsa/alsa_open_module using 2 channel(s), 44100 Hz, buffer 371 ms
[2006-09-24 16:19:52] INFO input-alsa/alsa_open_module Starting metadata update thread
[2006-09-24 16:19:52] INFO signals/signal_usr1_handler Metadata update requested
[2006-09-24 16:19:52] DBUG metadata/metadata_thread_signal reading metadata from "./metadata"
[2006-09-24 16:19:52] INFO metadata/metadata_thread_signal tag 1 is TITLE=(((Radio-Suburbia))) in live!!
[2006-09-24 16:19:52] INFO metadata/metadata_thread_signal tag 2 is ARTIST=
[2006-09-24 16:19:52] INFO metadata/metadata_thread_signal tag 3 is ALBUM=
[2006-09-24 16:19:52] INFO metadata/metadata_thread_signal tag 4 is CONTACT=http://suburbia.sindominio.net
[2006-09-24 16:19:52] INFO metadata/metadata_thread_signal Updating metadata
[2006-09-24 16:19:52] INFO audio/resample_initialise Initialised resampler for 2 channels, from 44100 Hz to 44100 Hz
[2006-09-24 16:19:52] INFO encode/encode_initialise Encoder initialising with bitrate management: 2 channels, 44100 Hz, minimum
bitrate 48000, nominal 64000, maximum 64000
[2006-09-24 16:19:53] INFO stream/ices_instance_stream Connected to server: icecast.anarres.net:8000/radio-suburbia.ogg
[2006-09-24 16:19:53] INFO audio/resample_initialise Initialised resampler for 2 channels, from 44100 Hz to 44100 Hz
[2006-09-24 16:19:53] DBUG encode/encode_clear Clearing encoder engine
[2006-09-24 16:19:53] INFO encode/encode_initialise Encoder initialising with bitrate management: 2 channels, 44100 Hz, minimum
bitrate 48000, nominal 64000, maximum 64000

Se quedará ahí parado en tu consola, hasta que finalices la emisión ...con un simple ^C (Ctrl + C).
Si acaso el prompt volviera a aparecer, antes de que finalices la emisión, puede ser que tengas algo mal configurado. Fijate en los
errores que muestra por pantalla, y hecha un vistazo a los logs.

Emitiendo únicamente con una lista de reproducción o playlist


Crear una lista de reproducción es muy sencillo, abrimos nuestro XMMS [5] y añadimos los audios que nos interesen, y la salvamos por
ejemplo como "playlist.m3u"

Es muy importante que la lista sea únicamente de ficheros en formato "ogg", sino tendremos errores en la ejecución de ices2
Lo siguiente es crear un fichero para el ices2 , en modo playlist.Es muy similar al anterior, cambiando únicamente algunos parametros.
Por lo cual basta que copiemos el fichero "ices2-live.xml" a uno que se llame por ej. "ices2-playlist.xml" y cambiar únicamente la zona
que se muestra a continuación.
$cp ices2-live.xml ices2-playlist.xml
$vim ices2-playlist.xml
<input>
<module>playlist</module>
<!--Indicar el sitio donde tenemos la
lista de reproducción-->
<param name="file">playlist.m3u</param>
<param name="type">basic</param>
<!--reproduce en modo random-->
<param name="random">1</param>
<!--A valor 0 reproduce la lista
continuamente."-->
<param name="once">0</param>
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="device">/dev/dsp</param>

</input>
Lo siguiente sería lanzar ices2, en modo playlist.

$ ices2 ices2-playlist.xml

[2006-09-24 16:47:39] INFO ices-core/main IceS 2.0.1 started...


[2006-09-24 16:47:39] INFO signals/signal_usr1_handler Metadata update requested
[2006-09-24 16:47:39] INFO playlist-basic/playlist_basic_get_next_filename Loading playlist from file "playlist.m3u"
[2006-09-24 16:47:39] DBUG playlist-basic/shuffle Playlist has been shuffled
[2006-09-24 16:47:39] INFO playlist-builtin/playlist_read Currently playing "///media/cdrom0/massive_attack/100th_window/antistar.ogg"
[2006-09-24 16:47:40] INFO stream/ices_instance_stream Connected to server: icecast.anarres.net:8000/radio-suburbia.ogg
[2006-09-24 16:47:40] DBUG reencode/reencode_page Reinitialising reencoder for new logical stream
[2006-09-24 16:47:40] INFO encode/encode_initialise Encoder initialising with bitrate management: 1 channels, 32000 Hz, minimum
bitrate 32000, nominal 48000, maximum 64000
[2006-09-24 16:47:40] INFO audio/resample_initialise Initialised resampler for 1 channels, from 44100 Hz to 32000 Hz
[2006-09-24 16:47:40] INFO audio/downmix_initialise Enabling stereo->mono downmixing

Y ya esta, ices2 reproduce (aunque tú no lo oigas localmente en tu computadora) el playlist que le has indicado.

Para finalizar
Como punto final, podrías oir la emisión de tu emisora,siguiendo el ejemplo que hemos desarrollado en :
"http://icecast.anarres.net :8000/radio-suburbia.ogg".
Pasa ese enlace a tu Xmms, o al Rhythmbox...y abracadabra...ya tenemos una emisora de radio por Internet con GNU/Linux, dispuesta a dar batalla en
la red...siempre que haya ido bien todos los pasos dados.
Podrás oir de ese modo, si todo va bien, como si fueras un oyente más. Eso sí en modo "live", te recomiendo que oigas lo que emites desde otra
máquina conectada a la red, para no generar un "eco" retardado de tu propia emisión en pleno directo ! ! X-) Que lo disfutes ! ! :)

Licencia
nomada in http://sinDominio.net
Este texto está bajo la licencia Creative Commons Atribución-CompartirIgual 2.1. Usted es libre: de copiar, distribuir, exhibir y comunicar la obra de
crear obras derivadas
Bajo las siguientes condiciones: Reconocimiento. Vd. debe reconocer y dar crédito al autor original.CompartirIgual. Si usted altera, transforma, o trabaja
sobre esta obra, usted puede divulgar la obra resultante solamente bajo los términos de una licencia idéntica a ésta.
Para cualquier utilización o distribución, usted debe informar claramente a terceros sobre los términos de la licencia de esta obra.
Cualquiera de estas condiciones pueden ser modificada si usted consigue el permiso del autor. Su derecho a un uso justo y legítimo de la obra, así
como otros derechos no se ven de manera alguna afectada por lo anterior.

Éste es un resumen del código legal que puede encontrarse en : http://www.creativecommons.org/licenses/by-sa/2.1/es/


Referencias
[1] http://es.wikipedia.org/wiki/Boris_Vian
[2] http://es.wikipedia.org/wiki/Streaming
[3] http://es.wikipedia.org/wiki/Ogg
[4] http://www.icecast.org/docs.php
[5] http://www.xmms.org/

Potrebbero piacerti anche