Instalar ICECAST2 en Ubuntu o Debian

¿Quieres instalar un servidor de radio en tu Ubuntu o Debian? Icecast2 es una buena solución para esto, un servidor de streaming libre, para linux, con soporte para .ogg y .mp3. Irá todo hecho por línea de comandos, porque si quieres montar un servidor de verdad lo más probable es que uses una distribución sin entorno gráfico.

El servidor icecast requiere de un cliente que le provea los contenidos, que pueden ser archivos ubicados en una carpeta en el PC, un reproductor de CD, un micrófono conectado a la tarjeta de sonido. En este ejemplo utilizaremos Ices2.

El primer paso será instalar icecast con el siguiente comando:

sudo apt-get install icecast2 ices2 vorbis-tools

Una vez instalado el servidor seguimos con la configuración del mismo. Empieza por editar el xml con la configuración:

sudo gedit /etc/icecast2/icecast.xml

Dentro te tocará definir los password para las fuentes y del administrador, así como el nombre del servidor. Busca la siguiente sección y rellena entre las etiquetas con los datos que correspondan:

<authentication>
<!-- Sources log in with username 'source' -->
<source-password>PASSWORD_FUENTE</source-password>
<!-- Relays log in username 'relay' -->
<relay-password>PASSWORD_RELAY</relay-password>

<!-- Admin logs in with the username given below -->
<admin-user>ADMINISTRADOR</admin-user>
   <admin-password>PASSWORD_ADMINISTRADOR</admin-password>
</authentication>

Y tras poner esto tal cual busca la siguiente línea para indicar el nombre del servidor que vamos a utilizar. Si emitimos desde nuestro equipo en local ponemos localhost

<!-- This is the hostname other people will use to connect to your server.
It affects mainly the urls generated by Icecast for playlists and yp
listings. -->
<hostname>www.miservidor.com</hostname>

También puedes modificar el listen socket para elegir el puerto, pero si va a ser desde tu equipo local deja por defecto el 8000

Ahora te toca habilitar el servicio, que por defecto viene deshabilitado para obligarte a cambiar la contraseña y el administrador.

sudo gedit /etc/default/icecast2

Ahí encontrarás esta línea, donde el valor estará a false y debes dejarlo a true como en el ejemplo:

# Edit /etc/icecast2/icecast.xml and change at least the passwords.
 # Change this to true when done to enable the init.d script
 ENABLE=true

Una vez habilitado, lo único que nos queda es activarlo:

sudo /etc/init.d/icecast2 start

La parte jodida llega ahora, ya que Ices2 no viene con archivos de configuración por defecto. En /usr/share/doc/ices2/examples se encuentran ejemplos para configuraciones de alsa, ogg y playlist. Como lo más habitual es utilizar esta última (usamos un playlist con música y con los programas previamente grabados), creamos una carpeta en etc llamada ices y copiamos el archivo allí. De paso, ya creamos la carpeta para el archivo log de ices y le damos permisos

sudo mkdir /etc/ices2
sudo cp /usr/share/doc/ices2/examples/ices-playlist.xml /etc/ices2/
sudo chmod +x /etc/ices2/ices-playlist.xml
sudo mkdir /var/log/ices
sudo chmod 777 /var/log/ices

Ahora toca modificar el xml:

sudo gedit /etc/ices2/ices-playlist.xml

Ahora os explico todo del tirón y luego ya os pongo debajo el documento completo para que veáis el ejemplo. Lo primero es en background cambiar el 0 por un 1, para así ejecutar en segundo plano el cliente y no tener el terminal abierto todo el tiempo. En la sección metadata configuramos el nombre, género y descripción de la estación de radio. En la sección input establecemos la ruta del archivo con la lista de reproducción (parámetro file), si queremos que la reproducción sea aleatoria (parámetro random, siendo 1 que sí y 0 que no) y si queremos que al acabar se corte la emisión o que se siga emitiendo en bucle (parámetro once). Finalmente en la sección instance configuramos el servidor, puerto, la contraseña de las fuentes (usa los mismos que pusiste antes al configurar el servidor) y el punto de montaje (pon algún nombre que sea descriptivo, sin espacios y acabado en .ogg

<?xml version="1.0"?>
<ices>
    <!-- run in background -->
    <background>1</background>
    <!-- where logs, etc go. -->
    <logpath>/var/log/ices</logpath>
    <logfile>ices.log</logfile>
    <!-- 1=error,2=warn,3=info,4=debug -->
    <loglevel>4</loglevel>
    <!-- set this to 1 to log to the console instead of to the file above -->
    <consolelog>0</consolelog>

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

    <stream>
        <!-- metadata used for stream listing (not currently used) -->
        <metadata>
            <name>Donnie Rock Radio</name>
            <genre>Rock'n'fuckin'roll</genre>
            <description>Lemmy en la cabeza y el corazón</description>
        </metadata>

        <!-- input module

            The module used here is the playlist module - it has 
            'submodules' for different types of playlist. There are
            two currently implemented, 'basic', which is a simple
            file-based playlist, and 'script' which invokes a command
            to returns a filename to start playing. -->

        <input>
            <module>playlist</module>
            <param name="type">basic</param>
            <param name="file">/home/donato/musicaradio/playlist.txt</param>
            <!-- random play -->
            <param name="random">0</param>
            <!-- if the playlist get updated that start at the beginning -->
            <param name="restart-after-reread">0</param>
            <!-- if set to 1 , plays once through, then exits. -->
            <param name="once">1</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 two instances as two mountpoints on the
            same server.  -->
        <instance>
            <!-- Server details:
                You define hostname and port for the server here, along with
                the source password and mountpoint.  -->
            <hostname>localhost</hostname>
            <port>8000</port>
            <password>XYZw3c676</password>
            <mount>/lista_programa.ogg</mount>

            <!-- Reconnect parameters:
                When something goes wrong (e.g. the server crashes, or the
                network drops) and ices disconnects from the server, these
                control how often it tries to reconnect, and how many times
                it tries to reconnect. Delay is in seconds.
                If you set reconnectattempts to -1, it will continue 
                indefinately. Suggest setting reconnectdelay to a large value
                if you do this.
            -->
            <reconnectdelay>2</reconnectdelay>
            <reconnectattempts>5</reconnectattempts> 

            <!-- maxqueuelength:
                This describes how long the internal data queues may be. This
                basically lets you control how much data gets buffered before
                ices decides it can't send to the server fast enough, and 
                either shuts down or flushes the queue (dropping the data)
                and continues. 
                For advanced users only.
            -->
            <maxqueuelength>80</maxqueuelength>

            <!-- Live encoding/reencoding:
                Currrently, the parameters given here for encoding MUST
                match the input data for channels and sample rate. That 
                restriction will be relaxed in the future.
            -->
            <encode>  
                <nominal-bitrate>64000</nominal-bitrate> <!-- bps. e.g. 64000 for 64 kbps -->
                <samplerate>44100</samplerate>
                <channels>2</channels>
            </encode>
        </instance>

    </stream>
</ices>

Ahí tenéis el ejemplo completo.

En fin, ya estamos acabando. Nos falta configurar el archivo de canciones a reproducir, siguiendo una de estas dos opciones:

##Opción 1: Crear una ruta hacia el archivo con la lista de canciones con el siguiente comando
sudo find /Ruta_Archivo -iname "*.ogg" > /Ruta_Archivo/LISTA.TXT

##Opción 2: Editamos el archivo y tecleamos la ruta completa para cada canción
sudo gedit /Ruta_Archivo/LISTA.TXT

##Y las vas agregando con esta este formato:
##/Ruta_Archivo/cancion1.ogg
##/Ruta_Archivo/cancion2.ogg

Ahora simplemente tienes que lanzar ices2:

sudo ices2 /etc/ices2/ices-playlist.xml &

Tras todo esto si vamos a http://localhost:8000 encontraremos un link al punto de montaje y, al picar en él podremos escuchar nuestro servidor de radio.

El servicio se para como cualquier otro servicio, con un sudo /etc/init.d/icecast2 stop mientras que para parar el cliente ices deberás buscar el pid del proceso y matarlo.

Si en lugar de un playlist lo que queréis es emitir radio en directo La cosa no cambia mucho. Lo primero que necesitáis, claro está, es tener una tarjeta de sonido que os deje enchufar un micrófono. Aunque si queréis algo más profesional lo mejor es meter una mesa de mezclas para poder alternar entre música (desde otro dispositivo reproductor conectado a la mesa) y el micro. La gran diferencia es que en lugar del xml de configuración playlist de ices2 debes copiar y editar el alsa. Con lo cual la cosa quedaría más o menos así:

sudo cp /usr/share/doc/ices2/examples/ices-alsa.xml /etc/ices2/
sudo gedit /etc/ices2/ices-alsa.xml

Mayormente la configuración es casi igual que la del playlist, pero obviamente sin la ruta a la lista de canciones, que en este caso no existe.

También cambia la instrucción para lanzar el ices, que ahora será sudo ices2 /etc/ices2/ices-alsa.xml & así que tenlo en cuenta a la hora de ejecutarlo.

La emisión en vivo es más coñazo, pero por otra parte te da las ventajas de emitir en directo en lugar de hacerlo con canciones o programas ya pregrabados.

En fin, ahora sólo os queda buscar un alojamiento en Islandia o Rusia desde el que poder emitir sin preocuparos de la persecución de la SGAE.

Anuncios

6 comentarios en “Instalar ICECAST2 en Ubuntu o Debian

  1. Betux

    Excelente tutorial, me sirvió muchísimo, es muy completo. Gracias a esto estoy reproduciendo por la intranet de mi empresa una radio que es parte del grupo, de este modo los usuarios no necesitan salir a internet para escucharla. Muchas gracias

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

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