![]() |
En este artículo se detallará la instalación de un servidor de audio streaming. Por streaming entendemos el poder escuhar sonido mediante un protocolo web sin necesidad de descargarlo. De manera que podemos montar nuestra propia radio por internet, o simplemente configurarnos un sistema para escuchar nuestra música desde cualquier sitio. Utilizaremos IceCast como servidor web de streaming, y DarkIce como codificador de audio. De manera que nos quedará una estructura: DarkIce -> IceCast -> Cliente Web |
IceCast
Como ya hemos dicho, IceCast se encarga de servir el audio a los clientes web. Es principalmente un servidor HTTP capaz de contener varios mountpoints. Un "mountpoint" (punto de montaje) es un subdirectorio donde encontramos un hilo streaming concreto (source). Es decir, podriamos tener:
http://ServidorStreaming.com:8080/rock http://ServidorStreaming.com:8080/jazz http://ServidorStreaming.com:8080/clasica
El audio para cada uno de esos hilos los sirve un cliente codificador distinto. Existen varios softwars para ello, como LiveIce o DarkIce (el que utilizaremos).
1. Descargamos el código fuente de IceCast: http://www.icecast.org
2. Antes que nada, instalamos los siguientes paquetes que necesitaremos:
libxml2 libxslt1-dev libvorbis-dev curl
3. Descomprimimos y compilamos:
tar xvzf icecast-2.*.tar.gz cd icecast-2.* ./configure make sudo make install
Esto nos instalará IceCast en /usr/local
4. Configuramos
Editamos el fichero: /usr/local/etc/icecast.xml
En especial debemos modificar las siguientes líneas:
<authentication> <source-password>SOURCE_PASS</source-password> <relay-password>RELAY_PASS</relay-password> <admin-user>admin</admin-user> <admin-password>ADMIN_PASS</admin-password> </authentication>
- SOURCE_PASS: El password que utilizarán los clientes codificadors
- RELAY_PASS: El password que utilizaran los relay servers (mirrors)
- ADMIN_PASS: El password per administrar/monitorizar via web
<listen-socket> <port>8080</port> </listen-socket>
<mount> <mount-name>/musica</mount-name> <max-listeners>100</max-listeners> </mount>
- Donde /musica es uno de los mountpoints que utilizaremos
5. Creamos los directorios necesarios:
sudo mkdir -p /usr/local/var/log/icecast sudo chown nobody /usr/local/var/log/icecast
6. Arrancamos
sudo -u nobody /usr/local/bin/icecast -b -c /usr/local/etc/icecast.xml
Ya tenemos IceCast escuchando en nuestro ordenador por el puerto 8080: http://localhost:8080
Pero como podemos comprobar en la pestaña "List Mounts", nos falta el cliente codificador
DarkIce
DarkIce se encarga de codificar el audio y enviarlo a IceCast, puede utilizar los siguientes formatos: LAME (mp3), Vorbis (ogg) o FAAC (aac)
Aunque siempre es mejor utilizar un formato libre como Vorbis, lo haremos con mp3 debido a que es el más extendido actualmente. Y como interfaz de sonido alsa, aunque también serviria jack o esd
Necesitamos los siguientes paquetes que instalaremos con nuestro gestor (¿apt?)
libtool autoconf alsa-lib alsa-utils alsa-lib-devel
LAME
Alguien un poco espavilado se dará cuenta que en esa lista falta el elemento esencial: LAME, vamos a compilarlo manualmente para que se integre mejor con darkIce. Descargamos las fuentes de: http://lame.sourceforge.net
tar xvzf lame-3.* cd lame-3.* ./configure --with-fileio=lame --without-vorbis --disable-gtktest --prefix=/usr --enable-nasm --enable-mp3x make sudo make install
De vuelta a DarkIce
Descargamos el código fuente de DarkIce: http://code.google.com/p/darkice
Compilamos e instalamos
tar xvzf darkice-0.*.tar.gz cd darkice-0.* ./configure --with-lame --with-alsa --with-debug --prefix=/usr make sudo make install cp darkice.cfg /etc/darkice.cfg
Cuando hagamos el configure, hay que fijarse que realmente encuentra las cabeceras de LAME:
checking for lame library at /usr ... found at /usr
Suponiendo como punto de montaje /musica, nos quedará el fichero de configuración /etc/darkice.cfg así:
[general] duration = 0 # duration of encoding, in seconds. 0 means forever bufferSecs = 5 # size of internal slip buffer, in seconds reconnect = yes # reconnect to the server(s) if disconnected [input] device = /dev/dsp # OSS DSP soundcard device for the audio input sampleRate = 44100 # sample rate in Hz. try 11025, 22050 or 44100 bitsPerSample = 16 # bits per sample. try 16 channel = 2 # channels. 1 = mono, 2 = stereo [icecast2-0] bitrateMode = abr # average bit rate format = mp3 # format of the stream: ogg vorbis bitrate = 64 # bitrate of the stream sent to the server server = localhost # host name of the server port = 8080 # port of the IceCast2 server, usually 8000 password = SOURCE_PASSWORD # source password to the IceCast2 server mountPoint = musica # mount point of this stream on the IceCast2 server name = musica # name of the stream description = Radio Musica # description of the stream url = http://localhost:8080/musica # URL related to the stream genre = Radio # genre of the stream public = yes # advertise this stream?
La configuración puede variar lijeramente para cada caso. Por ejemplo, en lugar de /dev/dsp puede ser /dev/dsp1
DarkIce empezará a codificar la entrada de audio /dev/dsp y la enviará a IceCast. Podemos escucharlo en la url:
http://localhost:8080/musica
Ahora el resto es jugar un poco con alsamixer para reproducir lo que deseemos
- Inicie sesión o regístrese para enviar comentarios

