Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Streaming Ice Cast 2
Streaming Ice Cast 2
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.
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 .
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.
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.
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.
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.
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
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.
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.
Configurando el servidor...
<limits>
<clients>100</clients>
<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>
<burst-size>65535</burst-size>
</limits>
Configurando el servidor...
<authentication>
<source-password>hackme</source-password>
<relay-user>relay</relay-user>
<relay-password>hackme</relay-password>
<admin-user>admin</admin-user>
<admin-password>hackm3</admin-password>
</authentication>
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>
<port>8001</port>
</listen-socket>
Configurando el servidor...
<relay>
<server>123.123.123.123</server>
<port>8001</port>
<mount>/example.ogg</mount>
<local-mount>/different.ogg</local-mount>
<on-demand>0</on-demand>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>
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 -->
<logsize>10000</logsize>
<logarchive>1</logarchive>
</logging>
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.
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.
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 -->
<loglevel>4</loglevel>
<consolelog>0</consolelog>
Configurando Ices
<metadata>
<name>Radio Music</name>
<genre>Varios</genre>
<input>
<module>alsa</module>
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="device">hw:0,0</param>
<param name="metadata">1</param>
<param name="metadatafilename">test</param>
</input>
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>
<param name="restart-after-reread">0</param>
<param name="once">0</param>
</input>
Configurando Ices
<hostname>localhost</hostname>
<port>8000</port>
<password>hackme</password>
<mount>/example1.ogg</mount>
<yp>1</yp>
<encode>
<quality> 8 </quality>
Configurando Ices...
<resample>
<in-rate>44100</in-rate>
<out-rate>22050</out-rate>
</resample>
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
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].....
Configurando Darkice
[icecast2-0]
bitrateMode = cbr (tambin puede tomar los valores abr, vbr)
format
bitrate
= 96
server
= 123.123.123.123
port
= 9990
password
= hackme
mountPoint = stream.mp3
name
description
url
= http://radiomusic.com
genre
= varios
public
= no
Parmetros de compresin
Parmetros de conexin
al servidor
Informacin metadata
ices /etc/ices.xml
darkice -c /etc/darkice.cfg
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