Seleccionar página

tux.jpgEl servidor de stream elegido es Icecast 2 (http://www.icecast.org/) porque después de mucho buscar vi que era el que mejores opciones proporciona. Entre ellas el poder retransmitir usando ogg vorbis. Un códec de audio libre de compresión con pérdidaDescargamos las fuentes:

# wget -c http://downloads.xiph.org/releases/icecast/icecast-2.3.1.tar.gz
# tar xzvf icecast-2.3.1.tar.gz
# cd icecast-2.3.1/
# ./configure && make && make install

Esto te instala el servidor y lo único que queda por hacer es configurarlo. Para hacer esto nos vamos a /etc/icecast y ahí veremos una serie de archivos.

El que a nosotros nos interesa es el siguiente: icecast.xml. En este archivo se configuran los parámetros del servidor.

icecast.xml

Como veremos en cuanto abramos el archivo es que es un archivo en formato xml.
Este archivo tiene una serie de secciones que si queremos entender mejor o queremos afinar más el rendimiento del servidor hay que irse a http://www.icecast.org

Lo primero que vamos a ver es el número de clientes que queremos tener. Pensad en vuestro ancho de banda y obrad en consecuencia, en mi caso como es para uso personal solo he puesto 2:

Luego viene la parte de autentificación que usa el servidor para permitir que administradores y codificadores se conecten a él. Para ello ponemos la contraseña que queramos: la contraseña queda totalmente visible.

El source-password es la contraseña que se va a solicitar a nuestro codificador, con lo cual nos tenemos que acordar de ella para luego usarla en el codificador.

El relay-password es la contraseña que se utilizaría en caso de que hiciéramos relay de otros streaming de Internet a través del nuestro. Finalmente queda el usuario y contraseña para administrar el servidor Icecast 2.

La siguiente parte que nos interesa de la configuración es la relacionada con la red. En esta parte configuraremos en qué tarjetas de red y puertos se retransmitirá y se escucharán las peticiones.

La parte de la red comienza con el siguiente cacho de configuración: El que veréis sirve para indicar el nombre de la máquina, es cómo el servidor obtiene qué tarjetas transmiten. En este caso yo para poder transmitir a Internet tengo un dyndns (un nombre de máquina gratuito) de forma que es ese el nombre que le pongo. Aquí podéis poner lo que querais, pero tiene que corresponder con una IP asociada, es decir si ponéis localhost asociaríais el puerto al 127.0.0.1, sino a otra IP.Luego podéis eligir el puerto que más os guste, pero creo que lo mejor es dejarlo en dónde está pues es el estandar de Icecast 2 (shoutcast usa el 8001).

Finalmente se pueden crear sockets asociados a IPs, esta parte la podéis modificar como queráis también, pero yo he dejado todo como estaba menos la parte del pues necesito transmitir hacia Internet.Con todo esto tendríamos configurado ya el servidor. Ahora sólo queda hacer:

# /etc/init.d/icecast2 start

Ices el codificador

Bien, en esta parte empieza lo que puede resultar un poco complicado. En Debian sólo tenemos la versión 2.0 de Ices porque codifica y retransmite solo en Ogg Vorbis. El problema asociado a este codificador es que para hacer una lista de reproducción necesita que todos los archivos fuente sean .ogg. Pero mi colección de archivos está en .mp3 con lo que este codificador no me servía, pues para hacerlo funcionar tenía que pasar todos mis mp3 a ogg. Entonces encontré en la página de Icecast http://www.icecast.org otra versión de Ices, la 0.4.

Añadir que la versión 2.0 de Ices permite leer listas de reproducción de archivos .ogg y retransmitir voz en directo. Esta parte es fácil de configurar y sólo teneis que leer este How to.

La versión 0.4 sirve para listas de reproducción, pues nos lee tanto archivos en mp3 como en ogg y los recodifica a mp3. Aquí hay que hacer una advertencia: al transmitir en mp3 podemos tener problemas legales, pues hay que recordar que el mp3 está registrado. En este caso a mi no me afecta pues yo solamente voy a transmitir para mi mismo en casa o en el trabajo, con lo que no voy a tener problemas de ningún tipo.

Otro "inconveniente es que no hay paquete .deb" con lo que hay que descargarse un tar.gz y compilarlo. Se necesita como dependencias externas: Lame encoder, pues necesita un codificador, y las librerías de desarrollo de XML, Vorbis, Perl y Phython. Estos últimos desde Debian es muy sencillo. Yo solo necesité obtener las librerías -dev de XML. Lo demás lo tenía todo.

# wget -c http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz
# tar xzvf ices-0.4.tar.gz
# cd ices-0.4/
# ./configure && make && make install
El codificador LAME os lo tenéis que descargar de su página web y compilarlo.

Con esto ya podréis compilar Ices 0.4.

Ahora queda configurar Ices 0.4. En función del

prefix

que uséis el archivo ices.conf se encontrará en un sitio u otro. El caso es que el archivo se llama ices.conf.

ices.conf

En este archivo especificaremos los parámetro de codificación y conexión al servidor Icecast 2. El archivo usa XML, al igual que Icecast 2.

Lo primero que encontramos es la lista de canciones que queremos que se retransmitan por Internet. Ahí pondremos el archivo con la lista de canciones tanto en mp3 como en ogg que tengamos en nuestro ordenador. Para generar una lista usaremos este comando:

# find /home/icecast/music | grep .ogg > playlist.txt
# find /path/to/audio/files -type f -name "*.mp3" -fprint playlist.txt (mejor este)

La siguiente parte que configuraremos es la conexión al servidor y la "emisora" que usaremos para retransmitir.Aquí se pone el nombre del servidor al que queremos conectarnos para retransmitir, el puerto y la contraseña. El resto no se toca pues vamos a transmitir a un servidor Icecast 2 y ya está configurado para eso. Y ya queda lo más sencillo

/ices

El Mountpoint es la "emisora". Es decir nosotros cuando conectamos con un servidor de radio por Internet ponemos el servidor y el puerto en el que se sirve la música, pero también indicamos la "emisora":

# mplayer http://servidor:puerto/emisora

Esto permite que un mismo servidor haga streaming de distintos tipos de música a la vez. En el ejemplo de arriba nuestra emisora se llamaría ices. Podéis poner lo que queráis.

Nos queda la descripción de la emisora:

Y la recodificación (si queremos) de los archivos de la lista:

Si no recodificamos la transmisión por Internet se hace a la que esté el archivo fuente, pudiendo ser muy costoso para una transmisión fluida por Internet. Yo estoy usando un Bitrate de 64 y se escucha muy bien, a 128 no conseguía escucharla de seguido pues el buffer del cliente se vaciaba rapidísimo. Para recodificar hay que indicarlo en:

Sólo nos queda elegir si transmitimos en Mono o en Stereo. En los tutoriales que me he leido por Internet todos recomiendan Mono porque consume menos ancho de banda. Esta última parte se afina más al gusto del consumidor y de su línea de Internet. Ahora ya sólo queda ejecutar el codificador:
# ices -c /donde-esté/ices.conf

Se conectará al servidor Icecast y ya podréis escuchar la música con vuestro reproductor favorito.

Si se quiere montar la emisora desde la linea de comandosse debe picar algo como esto:

# ices -v -F /home/icecast/music/playlist.txt -m music -h 192.23.534.12 -P hackme

Y así vemos si Icecast lo 've'.

Adjunto una configuración válida:

ices_04.png

Si algo os falla mirad los logs que son muy fáciles de entender.
Espero que con esto podáis hacer lo que yo: escuchar mi música siempre que tenga una conexión a Interrnet.