Anda di halaman 1dari 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
Codificador

Cliente

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> <sources>5</sources> <threadpool>5</threadpool> <queue-size>65288</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>

Cantidad clientes conectados Parmetros servidor Mximos tiempos espera Parmetros conexin a rfagas

Taller de streaming de radio con Icecast2 y Linux

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> Password para reenvo Password para administracin web Password para el codificador

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> <port>8001</port> </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

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> <on-demand>0</on-demand> <relay-shoutcast-metadata>0</relay-shoutcast-metadata> </relay> Servidor y puerto remoto Punto montaje remoto Donde monta el flujo remoto

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 --> <logsize>10000</logsize> <logarchive>1</logarchive> </logging> Indica que no se machacan los registros 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

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> Si ejecutamos desde un script para que funcione automticamente es necesario activar con 1 esta opcin.

<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>

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.

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices
<metadata> <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> Informacin de la playlist que sera mostrada a los clientes

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> <param name="restart-after-reread">0</param> <param name="once">0</param> </input> Con esta otra configuracin podemos reproducir una lista esttica de canciones almacenadas en playlist.txt

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices
<hostname>localhost</hostname> <port>8000</port> <password>hackme</password> <mount>/example1.ogg</mount> <yp>1</yp> Aqu configuramos la conexin con el servidor de streaming, tenemos que utilizar los valores utilizados en la configuracin de Icecast2. Aqu elegiremos el punto de montaje que tendr nuestro flujo. Opcin que nos permite anunciar pblicamente nuestro servidor.

<encode> <quality> 8 </quality> <samplerate> 44100 </samplerate> <channels> 2 </channels> </encode> Parmetros para la compresin del sonido

Taller de streaming de radio con Icecast2 y Linux

Configurando Ices...
<resample> <in-rate>44100</in-rate> <out-rate>22050</out-rate> </resample> Valores para cambiar la frecuencia del flujo de salida

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 Duracion de la codificacion: 0 significa ininterrumpidamente. Tamao del buffer interno mientras comprime Reconectar en caso de desconexin del servidor

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

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 bitrate server port password = mp3 (tambin puede ser vorbis) = 96 = 123.123.123.123 = 9990 = hackme

Parmetros de compresin

mountPoint = stream.mp3 name description url genre public = Radio Music Stream = Radio Music Internet Stream = http://radiomusic.com = varios = no

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

Anda mungkin juga menyukai