Está en la página 1de 37

Taller de streaming de radio

con Icecast2 y Linux


Taller de streaming de radio con Icecast2 y Linux

Que es streaming?
Entenderemos como streaming o flujo, un canal de
datos entre ordenadores, por el cual podemos
distribuir contenido multimedia desde un ordenador
servidor, a mltiples clientes.
Mecanismos como el streaming son ampliamente
utilizados con la popularizacin de Internet,
reemplazando las emisiones de radio tradicionales, su
uso es cada vez mas utilizado debido al aumento
general del ancho de banda.

Taller de streaming de radio con Icecast2 y Linux

Que es streaming?
Cuando hablamos de streaming no solo nos
referimos a distribucin de audio, tambin es
posible distribuir contenido de vdeo, incluso de
ambos tipos a travs del canal establecido.
Segn el contenido que estamos distribuyendo
podemos elegir una codificacin diferente.
En un mismo sistema de codificacin podemos
elegir mltiples calidades .

Taller de streaming de radio con Icecast2 y Linux

Formatos soportados
Para cada tipo de contenido multimedia se han
creado diferentes especificaciones para su
almacenaje y posterior recuperacin.
Generalmente y debido al gran tamao de una
seal maestreada, es necesario comprimirla en
una seal mas pequea para poder utilizarla
cmodamente.
No solo hay especificaciones para reducir el
tamao de la informacin, tambin las hay para
garantizar un trafico fluido y constante.

Taller de streaming de radio con Icecast2 y Linux

Formatos soportados
Cuando necesitamos distribuir audio, las
especificaciones, tambin llamadas codecs se
basan en despreciar parte de informacin que no
es audible al odo humano, as como eliminacin
de seales enmascaradas.
Mediante estos codecs podemos emitir flujos en
Internet con calidad CD con apenas 32KB/s por
cada cliente.
Para emisiones de voz, podemos utilizar
calidades mas bajas y aun economizamos mas
espacio,lo cual nos permite emitir mas flujos.
Taller de streaming de radio con Icecast2 y Linux

Formatos soportados
Si elegimos formatos con mayor nivel de
compresin, nuestra emisin en directo, sufrir
un retraso necesario para las tareas de
recompresin al formato final y transmisin.
Cuanta mas compresin necesitamos transmitir
menor cantidad de informacin, aumentando el
numero de clientes conectados, pero igualmente
aumentar el uso de procesador necesario para
realizar los clculos.

Taller de streaming de radio con Icecast2 y Linux

Formatos soportados (MP3)


MP3: Formato realizado por el grupo MPEG, fue
el primero en compresin de audio de alta calidad
(con perdidas), fue popularizado gracias a
Internet.
Permite ajustar la calidad de la compresin as
como el tamao por segundo del flujo.
Diferentes modalidades de compresin para una
mayor optimizacin
CBR: Constant bit rate (mas simple)
VBR: Variable bit rate (mas eficiente)

Taller de streaming de radio con Icecast2 y Linux

Formatos soportados (Vorbis)


Vorbis: Formato abierto, alternativa a formatos
patentados.
Especialmente pensado para bajas frecuencias
de muestreo y con gran cantidad de bit rates
disponibles.
Similar calidad de compresin que MP3 con un
poco menos de tamao.
Menos utilizado debido a que tradicionalmente el
usuario conoce el MP3 y las diferencias apenas
son distinguibles.

Taller de streaming de radio con Icecast2 y Linux

Otros formatos populares


WMA: Framework de formatos propietarios con
diferentes caractersticas segn su uso (con
perdidas o sin perdidas).
Calidad similar a Vorbis, mejora el rendimiento
del MP3 a bajos bit rates, con calidad media tiene
menos calidad.
AAC: Sucesor del MP3, orientado a usos de
banda ancha, sonido de mas calidad y nitidez,
con mas canales independientes, especial para
sonido envolvente.

Taller de streaming de radio con Icecast2 y Linux

Distribucin por Internet


Los clientes se conectan a un servidor central el
cual distribuye equitativamente los contenidos.
Un flujo desde el servidor no siempre es continuo
pero ha de suministrar suficiente informacin para
que la reproduccin siempre sea constante.
No es necesario que se transmita todo el
contenido para poder ir reproducindolo, se va
reproduciendo a medida se recibe.

Taller de streaming de radio con Icecast2 y Linux

Distribucin por Internet


El contenido no se recibe como un fichero
independiente, capaz de ser utilizado
directamente, as conseguimos una leve
proteccin del contenido.
Existen aplicaciones, que simulando ser un
cliente, pueden ir volcando este flujo en forma de
fichero, pero este no ser como el original.
No solo se limita a unicast, es posible utilizar
multicast para la distribucin de contenidos, aun
mas eficientemente, ya que todos los flujos desde
el servidor son percibidos como uno solo.
Taller de streaming de radio con Icecast2 y Linux

Software necesario
Para la implantacin de un sistema de radio por
Internet, es necesario un software especifico, este
software puede ser privativo u opensource.
La calidad de las herramientas opensource es de
gran calidad, con un coste bajo-nulo, por ello
elegiremos una distribucin de Linux como
plataforma para nuestra infraestructura.
Para este taller partiremos de una distribucin
Opensuse 10.3.

Taller de streaming de radio con Icecast2 y Linux

Software necesario
Necesitaremos ademas instalados los siguientes
paquetes, junto con todas sus dependencias.
Icecast2: Servidor para la distribucin de
contenidos.
Ices: Codificador para ajustar la seal a su
formato de salida.
Darkice: Otro codificador con muchas
opciones.
Xmms: Para poder reproducir el contenido del
flujo, cualquier reproductor moderno debera
de servir igualmente para esta tarea.
Taller de streaming de radio con Icecast2 y Linux

Infraestructura necesaria
Para una instalacin bsica tan solo
necesitaremos un servidor y uno o varios clientes.
El servidor tiene que tener acceso a los
contenidos originales.

Cliente

Servidor y
codificador

Cliente
Problema: Saturacin de la cpu del servidor.

Taller de streaming de radio con Icecast2 y Linux

Infraestructura necesaria
Es posible distribuir la carga entre varios
ordenadores para obtener mayor rendimiento.
El servidor puede utilizarse para distribuir
mltiples flujos.
Servidor
Servidor disco

Cliente

Cliente

Codificador

Taller de streaming de radio con Icecast2 y Linux

El servidor de streaming
Nuestro servidor ser icecast2, este solo acta
para distribuir entre los clientes uno o varios
flujos.
Dichos flujos tienen que ser proporcionados por
un codificador que adapte el audio original con los
parmetros para su distribucin.
Nuestro servidor soporta formatos Vorbis y MP3,
aunque la versin compilada de Opensuse solo
acepta MP3.

Taller de streaming de radio con Icecast2 y Linux

Configurando el servidor...
El fichero de configuracin esta ubicado en:
/etc/icecast.xml
Contiene secciones diferenciadas, las mas
importantes son:
Limits: Parmetros para servir flujos.
Authentication: Passwords de administracin.
Port, hostname y bind-address: Configuracin de
puertos para los diferentes flujos.
Relay: Configuracin retransmisin desde otro servidor
Logging: Ubicacin ficheros registro.

Taller de streaming de radio con Icecast2 y Linux

Configurando el servidor...
<limits>
<clients>100</clients>

Cantidad clientes conectados

<sources>5</sources>
<threadpool>5</threadpool>
<queue-size>65288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>

Parmetros servidor
Mximos tiempos espera

<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>

Parmetros conexin a rfagas

<burst-size>65535</burst-size>
</limits>

Taller de streaming de radio con Icecast2 y Linux

Configurando el servidor...
<authentication>
<source-password>hackme</source-password>

Password para el codificador

<relay-user>relay</relay-user>
<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackm3</admin-password>

Password para reenvo


Password para
administracin web

</authentication>

Es muy importante que el fichero de configuracin


solo sea legible por el administrador al contener
las contraseas sin cifrar.
Hay que cambiar las contraseas por defecto.
Taller de streaming de radio con Icecast2 y Linux

Configurando el servidor...
<hostname>host.dominio.com</hostname>
<listen-socket>
<port>9990</port>
<bind-address>123.456.789.123</bind-address>
</listen-socket>
<listen-socket>

Nombre del servidor, (solo para


generar la url del servidor en el
interfaz web).
Dos opciones posibles para
definir los puertos a la escucha:
Solo para una interfaz
Para cualquier interfaz

<port>8001</port>
</listen-socket>

Es posible definir varios puertos para las conexiones e


interfaces de red.

Taller de streaming de radio con Icecast2 y Linux

Configurando el servidor...
<relay>
<server>123.123.123.123</server>
<port>8001</port>
<mount>/example.ogg</mount>
<local-mount>/different.ogg</local-mount>

Servidor y puerto remoto


Punto montaje remoto
Donde monta el flujo remoto

<on-demand>0</on-demand>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>

Un punto de montaje, es la forma de identificar


un flujo que esta siendo emitido por un
servidor, tienen formato como si de un archivo
de audio se tratara, aunque no es obligatorio.
Taller de streaming de radio con Icecast2 y Linux

Configurando el servidor...
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<playlistlog>playlist.log</playlistlog>
<loglevel>4</loglevel>
<!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->

Ficheros de log donde buscaremos


pistas en caso de errores o mal
funcionamiento.
Nivel de depurado, aumentar para
ver mas detalles en caso de error

<logsize>10000</logsize>
<logarchive>1</logarchive>
</logging>

Indica que no se machacan


los registros

Existen mas secciones en el archivo de configuracin, como directory y


mount, pero estas son para configuraciones especificas no esenciales
para un funcionamiento normal.

Otras secciones como paths o security configuran rutas a archivos o


permisos de ejecucin del servidor, no es necesario ajustarlas.

Taller de streaming de radio con Icecast2 y Linux

Configurando el codificador
Hemos elegido 2 codificadores diferentes, Ices y
Darkice. Ices es el codificador que acompaa a
Icecast2 y es mas simple.
Operan de forma similar aunque el segundo es
mas verstil.
Ambos soportan MP3 y Vorbis, aunque los
binarios compilados para Opensuse no incluyen
el soporte para Vorbis.

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices...
De forma anloga a Icecast2, disponemos de
archivos xml de configuracin bsica en
/usr/share/doc/packages/ices/ices-oss.xml
Podemos elegir de entre varias configuraciones
de ejemplo (alsa, oss, playlist), segn el tipo de
fuente que vayamos a codificar.
En este archivo de configuracin especificamos
de donde tiene que tomar el sonido y donde lo
tiene que servir (un punto montaje del servidor de
streaming) as como los valores deseados para
comprimir el flujo.
Taller de streaming de radio con Icecast2 y Linux

Configurando Ices...
El archivo de configuracin lo tenemos que copiar
junto con las otras configuraciones en /etc
En el podemos ver secciones diferenciadas:
Relativas al programa (background, logpath,
logfile, logsize, loglevel), son utiles en caso de
errores de funcionamiento.
Relativas al flujo a codificar (metadata, input,
encode y resample), para configurar el flujo
que pasaremos al servidor de streaming y su
posterior distribucin.

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices...
<background>0</background>

<logpath>/var/log/ices</logpath>
<logfile>ices.log</logfile>
<logsize>2048</logsize>
<!-- 1=error, 2=warn, 3=info ,4=debug -->

Si ejecutamos desde un script para


que funcione automticamente es
necesario activar con 1 esta opcin.

De forma similar a Icecast configuramos


donde estarn los ficheros de log, el
tamao y el nivel de detalle, as como si
deseamos que se imprima por pantalla.

<loglevel>4</loglevel>
<consolelog>0</consolelog>

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices
<metadata>

Informacin de la playlist que sera


mostrada a los clientes

<name>Radio Music</name>
<genre>Varios</genre>

<description>Radio music internet</description>


<url>http://radiomusic.com</url>
</metadata>
Aqu utilizamos el sistema de sonido,
alsa para entrada de sonido, puede
tomar valores como oss, o playlist
(una lista esttica)

<input>
<module>alsa</module>
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="device">hw:0,0</param>

Ajustamos los parmetros de


muestreo de la seal de entrada

<param name="metadata">1</param>
<param name="metadatafilename">test</param>
</input>

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices...
Con la configuracin anterior captamos el sonido que
reproducimos en el codificador, lo mismo que nosotros
escuchamos como si tan solo reprodujramos.
<input>
<module>playlist</module>
<param name="type">basic</param>
<param name="file">/home/user/playlist.txt</param>
<param name="random">1</param>

Con esta otra configuracin


podemos reproducir una lista
esttica de canciones
almacenadas en playlist.txt

<param name="restart-after-reread">0</param>
<param name="once">0</param>
</input>

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices
<hostname>localhost</hostname>
<port>8000</port>
<password>hackme</password>

Aqu configuramos la conexin con el servidor


de streaming, tenemos que utilizar los valores
utilizados en la configuracin de Icecast2.

<mount>/example1.ogg</mount>

Aqu elegiremos el punto de montaje que


tendr nuestro flujo.

<yp>1</yp>

Opcin que nos permite anunciar pblicamente


nuestro servidor.

<encode>
<quality> 8 </quality>

Parmetros para la compresin del sonido

<samplerate> 44100 </samplerate>


<channels> 2 </channels>
</encode>

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices...
<resample>
<in-rate>44100</in-rate>
<out-rate>22050</out-rate>

Valores para cambiar la


frecuencia del flujo de salida

</resample>

Si necesitamos emitir un flujo de una charla en


directo, no ser valido utilizar el mtodo de la
playlist porque es esttico. Utilizaramos el
mtodo general para poder capturar la seal de
un micro conectado al equipo codificador.

Taller de streaming de radio con Icecast2 y Linux

Configurando Darkice...
Es un compresor alternativo, fcil de utilizar y con
una sintaxis intuitiva.
Es equivalente a Ices, as que el uso de uno u
otro depende de los gustos del usuario.
Se configura de forma anloga al anterior, esta
vez sobre el fichero /etc/darkice.cfg
Distinguimos las secciones principales:
General
[icecast2-0]
Inputs
[shoutcast-0]
[icecast-0]
Taller de streaming de radio con Icecast2 y Linux

Configurando Darkice...
[general]
duration = 0
bufferSecs = 10
reconnect = yes

[input]
device = hw:0,0
sampleRate = 44100
bitsPerSample = 16
channel = 2

Duracion de la codificacion: 0
significa ininterrumpidamente.
Tamao del buffer interno mientras
comprime
Reconectar en caso de desconexin
del servidor

Utilizaremos entrada del sistema ALSA, pero


tambin podemos utilizas OSS utilizando el
parmetro /dev/dsp.
Algunas tarjetas de sonido de bajo coste necesitan
activar el parmetro dsnoop como valor de device.
Ajustes sobre la seal a muestrear y comprimir.

Taller de streaming de radio con Icecast2 y Linux

Configurando Darkice
Darkice soporta conexiones a mltiples servidores
de streaming, icecast1, icecast2, shoutcast. Como
en este taller solo hemos configurado un servidor
Icecast2 podemos omitir las secciones [icecast-0]
y [shoutcast-0].
Prestaremos atencin solo a la seccin
[icecast2-0] que es la adecuada para nuestro
servidor, pudiendo tener varios flujos
configurados creando secciones [icecast2-1].....

Taller de streaming de radio con Icecast2 y Linux

Configurando Darkice
[icecast2-0]
bitrateMode = cbr (tambin puede tomar los valores abr, vbr)
format

= mp3 (tambin puede ser vorbis)

bitrate

= 96

server

= 123.123.123.123

port

= 9990

password

= hackme

mountPoint = stream.mp3
name

= Radio Music Stream

description

= Radio Music Internet Stream

url

= http://radiomusic.com

genre

= varios

public

= no

Parmetros de compresin

Parmetros de conexin
al servidor

Informacin metadata

Taller de streaming de radio con Icecast2 y Linux

Como realizar el streaming


Ahora que ya tenemos todas las aplicaciones
configuradas tan solo nos hace falta ir
ejecutndolas para realizar el streaming de audio.
Iniciaremos el servidor Icecast2 para que los
clientes se puedan ir conectando.
rcicecast start
Luego los codificadores

Tan solo es necesario ejecutar uno de


los dos, en funcin de lo que estemos
utilizando

ices /etc/ices.xml
darkice -c /etc/darkice.cfg

Taller de streaming de radio con Icecast2 y Linux

Como realizar el streaming


Es importante controlar, salvo en el caso de
comprimir un playlist, que el nivel de captura de
sonido, en el mezclador de audio es correcto, ya
que si no, emitiremos un flujo de silencio al no
poder capturar.
Son utiles medidores grficos de la seal
capturada por la tarjeta de sonido.
En el entorno Linux y Kde podemos encontrar un
mezclador de sonido (kmix), y un analizador de
sonido capturado (krecord) que nos ayudaran a la
tarea.
Taller de streaming de radio con Icecast2 y Linux

Mas informacin
Icecast2:
http://www.icecast.org/docs/icecast-2.2.0/
Ices:
http://www.icecast.org/docs/ices-2.0.0/
Darkice:
http://darkice.tyrell.hu/trac/wiki/Documentation

Gracias por la atencin

Taller de streaming de radio con Icecast2 y Linux

También podría gustarte