Como montar tu iRadio


Este artículo consiste o nace de la idea de poder escuchar la música que tengo en casa en cualquier PC que esté conectado a Internet. Para esta empresa necesito un servidor de Streaming: Icecast 2 y un codificador de archivos, pues la radio que vamos a montar consiste única y exclusivamente en una lista de reproducción de canciones, nada de comentarios ni anuncios, sólo mi música.

Servidor de streaming

Bueno, me decanté por el Icecast 2 porque después de mucho buscar vi que era el
que mejores opciones me proporciona. Entre ellas el poder retransmitir usando ogg
vorbis, aunque ya veremos como termina para mi la cosa. 😉

En debian (estoy en SID) como de costumbre:
apt-get install icecast2

Esto te instala el servidor y lo único que queda por hacer es configurarlo. Para
hacer esto nos vamos a /etc/icecast2 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:
<clients>2</clients>

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.

<authentication>
<!– Sources log in with username ‘source’ –>
<source-password>Aquí va vuestro password para sources</source-password>
<!– Relays log in username ‘relay’ –>
<relay-password>Aquí va vuestro password por si hacéis de relay</relay-password>
<!– Admin logs in with the username given below –>
<admin-user>Nombre del administrador del servidor</admin-user>
<admin-password>Contraseña del administrador del servidor</admin-password>
</authentication>

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:

<hostname>Nombre de la máquina en Internet</hostname>

<!– You can use these two if you only want a single listener –>
<port>8000</port>
<!–<bind-address>127.0.0.1</bind-address>–>

<!– You may have multiple <listener> elements –>
<listen-socket>
<port>8000</port>
<!– <bind-address>127.0.0.1</bind-address> –>
</listen-socket>

El <hostname> 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 <hostname> 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.3.

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

El codificador LAME os lo tenéis que descargar
de su página web y compilarlo.

Con esto ya podréis compilar Ices
0.3
.

Ahora queda configurar Ices 0.3. 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 lo siguiente:

<Playlist>
<!– This is the filename used as a playlist when using the builtin
playlist handler. –>
<File>/etc/icecast2/playlist.txt</File>
<!– Set this to 0 if you don’t want to randomize your playlist, and to
1 if you do. –>
<Randomize>1</Randomize>
<!– One of builtin, perl, or python. –>
<Type>builtin</Type>
<!– Module name to pass to the playlist handler if using perl or python.
If you use the builtin playlist handler then this is ignored –>
<Module>ices</Module>
</Playlist>

El <Playlist> 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 “Directorio con MP3 y OGG” -name *.mp3 > /etc/icecast2/playlist.txt

La siguiente parte que configuraremos es la conexión al servidor y la “emisora”
que usaremos para retransmitir.

<Server>
<!– Hostname or ip of the icecast server you want to connect to –>
<Hostname>Nombre del servidor</Hostname>
<!– Port of the same –>
<Port>8000</Port>
<!– Encoder password on the icecast server –>
<Password>Contraseña del servidor</Password>
<!– Header protocol to use when communicating with the server.
Shoutcast servers need “icy”, icecast 1.x needs “xaudiocast”, and
icecast 2.x needs “http”. –>
<Protocol>http</Protocol>
</Server>

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:

<Mountpoint>/ices</Mountpoint>

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:

<!– The name of you stream, not the name of the song! –>
<Name>Nombre de la emisora</Name>
<!– Genre of your stream, be it rock or pop or whatever –>
<Genre>Género de la música</Genre>
<!– Longer description of your stream –>
<Description>Descripción más larga</Description>
<!– URL to a page describing your stream –>
<URL>http://localhost/</URL>
<!– 0 if you don’t want the icecast server to publish your stream on
the yp server, 1 if you do –>
<Public>0</Public>

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

<!– Stream bitrate, used to specify bitrate if reencoding, otherwise
just used for display on YP and on the server. Try to keep it
accurate –>
<Bitrate>64</Bitrate>
<!– If this is set to 1, and ices is compiled with liblame support,
ices will reencode the stream on the fly to the stream bitrate. –>
<Reencode>1</Reencode>
<!– Number of channels to reencode to, 1 for mono or 2 for stereo –>
<!– Sampe rate to reencode to in Hz. Leave out for LAME’s best choice
<Samplerate>44100</Samplerate>
–>
<Channels>1</Channels>

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:
<Reencode>1</Reencode>

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

Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=2076 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.