Internet · Ubuntu

Icecast & MuSE, crea tu propia emisora de radio por Internet

Icecast

Icecast Logo
Icecast es un servidor capaz de servir mediante streaming contenidos como Vorbis sobre HTTP estándar o MP3 sobre el protocolo utilizado por SHOUTcast. Utiliza programas externos, llamados «source clientes» (clientes de fuentes) para crear los streams (el proyecto incluye un programa cliente de fuentes llamado IceS que permite crear listas de reproducción a partir de archivos de sonido, pero también existen otros clientes de fuentes, como el MuSE, desarrollados por terceras partes).

Su funcionalidad es similar al programa servidor de medios SHOUTcast, propiedad de Nullsoft.

Gracias a Icecast y MuSE, y a nuestra tarjeta de sonido, podemos montarnos nuestra pequeña emisora de radio en internet.

Obtención de Icecast

Aunque existen paquetes precompilados para varios sistemas (entre ellos Debian), nosotros vamos a obtener el código fuente de la aplicación y compilarlo.

El código fuente lo podemos descargar de:

icecast-2.3.1.tar.gz

Preparando el entorno de construcción

Como siempre que compilamos, lo mímino que necesitamos es el paquete «build-essential» que contiene las herramientas necesarias para realizar la compilación de aplicaciones. Dicho paquete lo instalaremos mediante apt-get o Synaptic.

Para poder llevar a cabo la compilación correctamente, además tendremos que instalar el paquete «xslt1-dev» que incluye la utilidad «xslt-config» que se utiliza en los script de compilación y construcción de Icecast. Nuevamente usaremos apt-get o Synaptic para su instalación.

Así mismo, también es necesario el paquete «libvorbis-dev» que instalaremos del mismo modo.

Compilación de Icecast

Una vez que tenemos todo listo, procederemos a prepararnos para la compilación. Lo primero, descomprimir el código fuente:

$ gunzip icecast-2.3.1.tar.gz
$ tar -xvf icecast-2.3.1.tar

Nos sitamos en el nuevo directorio creado y ejecutamos:

$ ./configure --prefix=/usr/local/icecast

(NOTA: el prefijo sirve para realizar posteriormente la instalación en dicho directorio, en vez de utilizar la ubicación por defecto)

Ahora compilamos mediante:

$ make

E instalamos:

$ sudo make install

Con esto ya tenemos instalado el servidor en /usr/local/icecast, y en el subdirectorio bin estará el ejecutable icecast.

Configuración del servidor Icecast

Antes de arrancar nuestro servidor, pasaremos a configurarlo. Dicha configuración se encuentra centralizada en el archivo /usr/local/icecast/etc/icecast.xml que editaremos utilizando el comando:

$ sudo gedit /usr/local/icecast/etc/icecast.xml

<icecast>
<limits>
<clients>100</clients>
<sources>2</sources>
<threadpool>5</threadpool>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>

<authentication>
<source-password>hackme</source-password>
<relay-password>hackme</relay-password>

<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>

<hostname>localhost</hostname>

<listen-socket>
<port>8000</port>
</listen-socket>

<fileserve>1</fileserve>

<paths>
<basedir>/usr/local/icecast/share/icecast</basedir>

<logdir>/usr/local/icecast/var/log/icecast</logdir>
<webroot>/usr/local/icecast/share/icecast/web</webroot>
<adminroot>/usr/local/icecast/share/icecast/admin</adminroot>

<alias source=»/» dest=»/status.xsl»/>
</paths>

<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>4</loglevel>
<logsize>10000</logsize>
</logging>

<security>
<chroot>0</chroot>
<changeowner>
<user>nobody</user>
<group>nogroup</group>
</changeowner>
</security>
</icecast>

NOTA: Para obtener información sobre el archivo de configuración dirígete a la documentación de Icecast. En mi caso, para probar, únicamente he modificado la parte de seguridad para habilitar el cambio de usuario y grupo a nobody y nogroup respectivamente.

Como en la configuración especificamos que se utilice el directorio «/usr/local/icecast/var/log/icecast» como directorio de log y dicho directorio no existe previamente, debemos crearlo a mano:

$ sudo mkdir -p /usr/local/icecast/var/log/icecast

Una vez creado estableceremos el nuevo propietario del mismo:

$ sudo chown nobody.nogroup /usr/local/icecast/var/log/icecast/

Y modificaremos sus permisos:

$ sudo chmod 777 /usr/local/icecast/var/log/icecast/

Ya estamos listos para arrancar el servidor mediante el comando:

$ sudo /usr/local/icecast/bin/icecast -c /usr/local/icecast/etc/icecast.xml

MuSE

MuSE Logo
MuSE (Multiple Streaming Engine) es una aplicación para mezclar, codificar, y realizar streaming de sonido en la red: puede mezclar hasta 6 streams de audio codificados (desde archivos o red, mp3 o ogg) además de la señal de entrada de una tarjeta de sonido, cuyo stream resultante pude ser reproducido localmente en la tarjeta de sonido y/o codificado a diferentes bitrates, grabado al disco duro y/o enviado como stream a la red. Cuando se envia a un servidor, el audio resultante puede ser escuchado a través de la red por un amplio abanico de reproductores disponibles en diferentes sistemas operativos.

Obtención de MuSE

Como antes, vamos a descargar el código fuente de MuSE, para después compilarlo e instalarlo. El código fuente está disponible en:

MuSE-0.9.2.tar.gz

Preparando el entorno de construcción

Para compilar MuSE necesitaremos tener instalados previamente los paquetes:

  • liblame-dev, necesario para «codificar» en MP3 (si no, MuSE será un simple reproductor).
    (Si está instalado correctamente, tras el «configure» debería aparecer una línea con «:: Linking Lame libraries for MP3 encoding»)
  • gettext, ya que los script de compilación utilizan el programa «msgfmt» que pertenece a dicho paquete
  • xlibs-dev, libgtk2.0-dev y libx11-dev si queremos tener el entorno gráfico.
    (Tras el «configure» debería aparecer una línea con «:: Building the GTK-2 user interface»)

Compilación de MuSE

Una vez que tenemos todo listo, procederemos a prepararnos para la compilación. Lo primero, descomprimir el código fuente:

$ gunzip MuSE-0.9.2.tar.gz
$ tar -xvf MuSE-0.9.2.tar

Nos sitamos en el nuevo directorio creado y ejecutamos:

$ ./configure --prefix=/usr/local/muse

(NOTA: el prefijo sirve para realizar posteriormente la instalación en dicho directorio, en vez de utilizar la ubicación por defecto)

Ahora compilamos mediante:

$ make

E instalamos:

$ sudo make install

Con esto ya tenemos instalado el cliente de fuentes MuSE en /usr/local/muse, y en el subdirectorio bin estará el ejecutable muse.

Ejecución de MuSE

Antes de ejecutar debemos desactivar el servidor de sonido de Gnome para liberar el bloqueo de los dispositivos de sonido de nuestra tarjeta de sonido. Para esto seguimos los siguientes pasos:

Sistema –> Preferencias –> Sonido –> Desmarcar «Activar el servidor de sonido al iniciar»

Ahora nos aseguramos de tener habilitada la entrada del micrófono (y de tener enchufado el micro -entrada de color rojo-)

Aplicaciones –> Sonido y vídeo –> Control de volumen –> Captura –> Microphone –> Asegúrate de que está activada la captura de audio del Micrófono

Control de Volumen

Y ya podemos ejecutar MuSE:

$ /user/local/muse/bin/muse

Configuración de MuSE

Marca la «Entrada de línea», pulsa en «Vamos a transmitir por red»:
Servidor: localhost
Puerto: 8000
Punto de montaje: /live
Nombre: Mi emisora
URL: http://tuequipo.red
Descripción: Mi emisora
Tipo de ingreso: Icecast2
Constraseña: La configurada en IceCAST (por defecto hackme)
Pulsamos «Conectar»

Listo, ya podemos escuchar la radio desde otro equipo con, por ejemplo, el Windows Media Player, abriendo la URL:

http://tuequipo.red:8000/live

Notas finales

Ahora, si queremos añadir la emisora a nuestra página Web, podemos o bien incrustar un reproductor como el MediaPlayer usando el siguiente código en la página web que queramos:


<object width="320" height="45"
classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
id="mediaplayer1">
<param name="Filename" value="http://tuequipo.red:8000/live">
<param name="AutoStart" value="True">
<param name="ShowControls" value="True">
<param name="ShowStatusBar" value="False">
<param name="ShowDisplay" value="False">
<param name="AutoRewind" value="True">

<embed
type="application/x-mplayer2"
pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/MediaPlayer/"
width="320" height="45" src="http://tuequipo.red:8000/live"
autostart="True"
showcontrols="True" showstatusbar="False"
showdisplay="False" autorewind="True">
</embed>

</object>

o bien incrustando un reproductor Flash como el MusicPlayer, que nos resultará más compatible ya que tendremos disponibles flash en más Sistemas Operativos:


<object type="application/x-shockwave-flash"
data="http://musicplayer.sourceforge.net/button/musicplayer.swf?&song_url=http://tuequipo.red:8000/live&"
width="17" height="17">
<param name="movie"
value="http://musicplayer.sourceforge.net/button/musicplayer.swf?&song_url=http://tuequipo.red:8000/live&" />
<img src="noflash.gif"
width="17" height="17" alt="" />
</object>

Enlaces de interés

8 respuestas a “Icecast & MuSE, crea tu propia emisora de radio por Internet

  1. itenecora@itm002:~/icecast-2.3.1$ make
    make: *** No se especificó ningún objetivo y no se encontró ningún makefile. Alto.

    Quisieran que me ayuden no,puedo instalar

  2. al ejecutar el archivo configure me pide la de bo tener instalado la libreria libsndfile y ya lo instale anteriormente si alguien me pudiera ayudar con este problema

  3. a mi me sale esto si alguien tiene idea se lo agradeceria
    ERROR: You should not run icecast2 as root
    Use the changeowner directive in the config file

  4. Hola. Al hacer el make al MuSE me aparece el siguiente error:

    ../../src/linklist.h:47: error: calificación extra ‘Linklist::’ en el miembro ‘selected’
    In file included from docking.cpp:30:
    ./xpm2/dock.xpm:209: aviso: conversión obsoleta de una constante de cadena a ‘char*’
    **[ésto último varias veces]
    make[3]: *** [docking.o] Error 1
    make[3]: se sale del directorio `/home/rene/MuSE-0.9.2/src/gtkgui2′
    make[2]: *** [all-recursive] Error 1
    make[2]: se sale del directorio `/home/rene/MuSE-0.9.2/src’
    make[1]: *** [all-recursive] Error 1
    make[1]: se sale del directorio `/home/rene/MuSE-0.9.2′
    make: *** [all] Error 2

    ¿Cuál puede ser el problema? Es la primera vez que instalo algo en Ubuntu compilando.

  5. Hola, ya se que es un tema viejo pero queria saber si em podrias ayudar…

    Yo tengo el servidor Icecast2 montado.. pero por ejemplo tengo varios amigos que quieren retransmitir desde su casa y cada uno quiere tener su propia radio con su propia contraseña… hasta ahora lo tenia que todos se conectaban desde la misma contraseña pero el /Mount era diferente en todos… y claro todos querian tener su panel de administracion y demas…. pero al tener todos la misma pass no les podia dar el user…

    no se si me explico…. yo lo que quiero es que por ejemplo yo pueda definir que mount puede transmitir y el que no este ahi no puede… y que cada uno tenga una pass diferente… y si es necesario un puerto distinto pos eso….

    muchas gracias!!!

Deja un comentario