Radio por internet en solo 5 minutos con GNU/Linux

Bien, vamos a montar nuestra propia estación de radio utilizando software libre. Para ello utilizaremos unos servidores gratuitos que implementan este servicio utilizando Icecast y en nuestra máquina solo instalaremos la aplicación Ices2.

icecast

Icecast es un proyecto para streaming de medios mantenido por la Fundación Xiph.org. Puede ser utilizado para crear una estación de la radio en internet o para uso privado entre otras cosas. Es muy versátil en que los nuevos formatos se pueden agregar relativamente fácil y soporta estándares abiertos para comunicación e interacción. También se refiere específicamente al programa servidor que es parte del proyecto.

Actualmente el servidor Icecast soporta en sus últimas versiones streams Ogg Vorbis, MP3, Ogg Speex, Ogg FLAC, Ogg Theora y AAC.

El servidor Icecast tiene una funcionalidad similar al programa propietario de servidor de medios SHOUTcast de Nullsoft y es compatible con éste.

Ices2 es el programa cliente que provee a Icecast de un stream o flujo de audio, pudiendo ser lanzado desde estaciones remotas a la que esta instalado y montado el servidor Icecast2. Puede funcionar en modo “live” (en directo) o reproduciendo una lista de reproducción o playlist.

Primer Paso:

Vamos a crear una cuenta en los servidores de giss.tv, para ello vas al enlace y creas tu cuenta y punto de montaje, esto realmente no merece mucha explicación ya que es bastante sencillo. (este sitio es el que provee los servidores gratuitos icecast).

Segundo Paso:

Instalamos la aplicación Ices2 desde los repositorios:

$ sudo apt-get install ices2

Tercer Paso:

Debemos crear nuestro archivo de configuración .xml que complementariamente con Ices2, enviará a los servidores el stream o flujo de audio que generemos en nuestra máquina.

copia el archivo de ejemplo que se encuentra en /usr/share/doc/ices2/examples/ices-alsa.xml en tu carpeta personal

usuario@nombre:/usr/share/doc/ices2/examples$ cp ices-alsa.xml /home/tu_usuario/

Luego edita este archivo en tu home, con el editor que prefieras y te debe quedar de una forma similar a esto:

——————

<?xml version=”1.0″?>
<ices>

<!– run in background  –>
<background>0</background>
<!– where logs go. –>
<logpath>/var/log/ices</logpath>
<logfile>ices.log</logfile>
<!– size in kilobytes –>
<logsize>2048</logsize>
<!– 1=error, 2=warn, 3=infoa ,4=debug –>
<loglevel>4</loglevel>
<!– logfile is ignored if this is set to 1 –>
<consolelog>0</consolelog>

<!– optional filename to write process id to –>
<!– <pidfile>/home/ices/ices.pid</pidfile> –>

<stream>
<!– metadata used for stream listing –>
<metadata>
<name>Tu radio</name>
<genre>Variado</genre>
<description>Transmisión utilizando GNU/Linux</description>
<url>http://giss.tv:8000/tu_punto_de_montaje.ogg</url&gt;
</metadata>

<!–    Input module.

This example uses the ‘oss’ module. It takes input from the
OSS audio device (e.g. line-in), and processes it for live
encoding.  –>
<input>
<module>alsa</module>
<param name=”rate”>48000</param>
<param name=”channels”>2</param>
<param name=”device”>hw:0,0</param>
<param name=”periods”>2</param>
<param name=”buffer-time”>500</param>
<!– Read metadata (from stdin by default, or –>
<!– filename defined below (if the latter, only on SIGUSR1) –>
<param name=”metadata”>0</param>
<param name=”metadatafilename”>test</param>
</input>

<!–    Stream instance.

You may have one or more instances here.  This allows you to
send the same input data to one or more servers (or to different
mountpoints on the same server). Each of them can have different
parameters. This is primarily useful for a) relaying to multiple
independent servers, and b) encoding/reencoding to multiple
bitrates.

If one instance fails (for example, the associated server goes
down, etc), the others will continue to function correctly.
This example defines a single instance doing live encoding at
low bitrate.  –>

<instance>
<!–    Server details.

You define hostname and port for the server here, along
with the source password and mountpoint.  –>

<hostname>giss.tv</hostname>
<port>8000</port>
<password>tu_password</password>
<mount>/tu_punto_de_montaje.ogg</mount>
<yp>1</yp>   <!– allow stream to be advertised on YP, default 0 –>
<reconnectdelay>2</reconnectdelay>
<reconnectattempts>8</reconnectattempts>
<maxqueuelength>80</maxqueuelength>

<!–    Live encoding/reencoding:

channels and samplerate currently MUST match the channels
and samplerate given in the parameters to the oss input
module above or the remsaple/downmix section below.  –>

<encode>
<nominal-bitrate>64000</nominal-bitrate>
<quality>5</quality>
<samplerate>48000</samplerate>
<channels>2</channels>
</encode>

<!– stereo->mono downmixing, enabled by setting this to 1 –>
<downmix>0</downmix>

<!– resampling.

Set to the frequency (in Hz) you wish to resample to, –>

<resample>
<in-rate>48000</in-rate>
<out-rate>44100</out-rate>
</resample>
</instance>

</stream>
</ices>

———-

Lo importante en el archivo es lo que puse con negritas, el resto de las configuraciones las podrás ir acomodando a tu gusto.

Cuarto Paso:

Realizamos la conexión con los servidores de giss.tv realizando el siguiente comando como usuario root:

$ sudo ices2 archivo.xml

Quinto Paso:

Configuramos en alsa la captura de audio de nuestra tarjeta de sonido, para ello haz doble click sobre el icono de parlante en la barra superior habilita la captura de audio, te deberá mostrar un micrófono y parlante, estos deben estar habilitados y con un volumen medio.

Finalmente reproduce un archivo de música en tu reproductor favorito y podrás luego desde otra máquina verificar la transmisión.  No lo hagas en la misma máquina que esta generando el stream, ya que se provocará una retransmisión del audio.

2 comments

  1. hola que tal ?
    Te comento que estuve siguiendo paso a paso tu tuto, estoy usando linux mint. El problema me surge cuando aplico el 2º paso, es decir cuando hago el sudo apt-get install ices2 me da los siguientes errores:

    lojack ~ # apt-get install ices2
    Leyendo lista de paquetes… Hecho
    Creando árbol de dependencias
    Leyendo la información de estado… Hecho
    Paquetes sugeridos:
    icecast2
    Se instalarán los siguientes paquetes NUEVOS:
    ices2
    0 actualizados, 1 se instalarán, 0 para eliminar y 22 no actualizados.
    Se necesita descargar 0B/56,8kB de archivos.
    After this operation, 254kB of additional disk space will be used.
    Seleccionando el paquete ices2 previamente no seleccionado.
    (Leyendo la base de datos …
    222616 ficheros y directorios instalados actualmente.)
    Desempaquetando ices2 (de …/ices2_2.0.1-6_i386.deb) …
    Configurando ices2 (2.0.1-6) …
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 465

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 463

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag sect line 458

    ^
    /var/lib/scrollkeeper/zh_CN/scrollkeeper_extended_cl.xml:473: parser error : Premature end of data in tag ScrollKeeperContentsList line 2

    ^

    trate tambien por el gestor de paquetes synaptic pero tampoco pude.

    te agredecere si me podes hechar una mano…gracias…saludos y exitoz

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s