Instalación y Configuración de un Servidor de Streaming Multimedia con IceCast

Hace mucho tiempo que ya es normal encontrar en la red servicios de transmisión de radio que llegan a todo el planeta, pues en este post voy a explicar cómo realizar la instalación de un Servidor IceCast que es un servicio libre en contraparte al conocido servicio de ShoutCast.

Antes que nada quiero aclarar que esta instalación la realizaré sobre un Debian/Linux, pero la configuración es análoga para cualquier distribución Basada en GNU/Linux.

#aptitude install icecast2 ices2

Icecast2: Servidor de Streaming.
Ices2: Cliente para emitir Stream.

Inicialmente configuraremos el Servicio de Icecast localmente, para ello IP Server = 127.0.0.1 o localhost, el puerto por el que atiende icecast será 8000.

Para las ediciones de los ficheros de texto yo prefiero usar «nano», ustedes pueden hacer uso del que gusten.  Así mismo, es recomendable que cambien las contraseñas que la instalación trae por defecto, como en <source-password>, <relay-password> y <admin-password>; éste último se refiere a la contraseña de acceso via web: http://127.0.0.1:8000/admin/

Iniciamos con la configuración:

Configuración de Icecast2:

#nano /etc/icecast2/icecast.xml
 &lt;icecast&gt;
    &lt;limits&gt;
        &lt;clients&gt;100&lt;/clients&gt;
        &lt;sources&gt;2&lt;/sources&gt;
        &lt;threadpool&gt;5&lt;/threadpool&gt;
        &lt;queue-size&gt;524288&lt;/queue-size&gt;
        &lt;client-timeout&gt;30&lt;/client-timeout&gt;
        &lt;header-timeout&gt;15&lt;/header-timeout&gt;
        &lt;source-timeout&gt;10&lt;/source-timeout&gt;
        &lt;burst-on-connect&gt;1&lt;/burst-on-connect&gt;
        &lt;burst-size&gt;65535&lt;/burst-size&gt;
    &lt;/limits&gt;

<pre><code>&amp;lt;authentication&amp;gt;
    &amp;lt;source-password&amp;gt;source&amp;lt;/source-password&amp;gt;
    &amp;lt;relay-password&amp;gt;source&amp;lt;/relay-password&amp;gt;
    &amp;lt;admin-user&amp;gt;admin&amp;lt;/admin-user&amp;gt;
    &amp;lt;admin-password&amp;gt;admin&amp;lt;/admin-password&amp;gt;
&amp;lt;/authentication&amp;gt;

&amp;lt;hostname&amp;gt;localhost&amp;lt;/hostname&amp;gt;

&amp;lt;listen-socket&amp;gt;
    &amp;lt;port&amp;gt;8000&amp;lt;/port&amp;gt;
&amp;lt;/listen-socket&amp;gt;

&amp;lt;fileserve&amp;gt;1&amp;lt;/fileserve&amp;gt;

&amp;lt;paths&amp;gt;
    &amp;lt;basedir&amp;gt;/usr/share/icecast2&amp;lt;/basedir&amp;gt;
    &amp;lt;logdir&amp;gt;/var/log/icecast2&amp;lt;/logdir&amp;gt;
    &amp;lt;webroot&amp;gt;/usr/share/icecast2/web&amp;lt;/webroot&amp;gt;
    &amp;lt;adminroot&amp;gt;/usr/share/icecast2/admin&amp;lt;/adminroot&amp;gt;
    &amp;lt;alias source=&amp;quot;/&amp;quot; dest=&amp;quot;/status.xsl&amp;quot;/&amp;gt;
&amp;lt;/paths&amp;gt;

&amp;lt;logging&amp;gt;
    &amp;lt;accesslog&amp;gt;access.log&amp;lt;/accesslog&amp;gt;
    &amp;lt;errorlog&amp;gt;error.log&amp;lt;/errorlog&amp;gt;
    &amp;lt;loglevel&amp;gt;3&amp;lt;/loglevel&amp;gt;
    &amp;lt;logsize&amp;gt;10000&amp;lt;/logsize&amp;gt;
&amp;lt;/logging&amp;gt;

&amp;lt;security&amp;gt;
    &amp;lt;chroot&amp;gt;0&amp;lt;/chroot&amp;gt;
    &amp;lt;!--
    &amp;lt;changeowner&amp;gt;
        &amp;lt;user&amp;gt;nobody&amp;lt;/user&amp;gt;
        &amp;lt;group&amp;gt;nogroup&amp;lt;/group&amp;gt;
    &amp;lt;/changeowner&amp;gt;
    --&amp;gt;
&amp;lt;/security&amp;gt;
</code></pre>

&lt;/icecast&gt;
#nano /etc/default/icecast2
CONFIGFILE=&quot;/etc/icecast2/icecast.xml&quot;
USERID=icecast2
GROUPID=icecast
ENABLE=true
#/etc/init.d/icecast2 start

Si hasta este punto todo se ha hecho bien, la siguiente dirección debería cargar correctamente en el navegador: http://127.0.0.1:8000

Configuración de Ices2:

Modo Live: Para Emitir streaming en linea, por ejemplo con la salida desde micro:
Los ficheros de configuración de ices2 lo pueden crear en su directorio personal, según el ejemplo mi directorio personal es /home/beastieux/

$mkdir /home/beastieux/iceconf
$cd /home/beastieux/iceconf
$nano iceconf/ices2-live.xml
&lt;?xml version='1.0'?&gt;
&lt;ices&gt;
&lt;background&gt;0&lt;/background&gt;
&lt;logpath&gt;/var/log/icecast2&lt;/logpath&gt;
&lt;logfile&gt;ices.log&lt;/logfile&gt;
&lt;loglevel&gt;4&lt;/loglevel&gt;
&lt;consolelog&gt;1&lt;/consolelog&gt;

&lt;stream&gt;

&lt;metadata&gt;
&lt;name&gt;Radio Beastieux&lt;/name&gt;
&lt;genre&gt;rock-metal-bossa-chilli&lt;/genre&gt;
&lt;description&gt;Radio con la mejor musica de mi computadora&lt;/description&gt;
&lt;url&gt;https://beastieux.com&lt;/url&gt;
&lt;/metadata&gt;

&lt;input&gt;
&lt;module&gt;alsa&lt;/module&gt;
&lt;param name=&quot;rate&quot;&gt;44100&lt;/param&gt;
&lt;param name=&quot;channels&quot;&gt;2&lt;/param&gt;
&lt;param name=&quot;device&quot;&gt;hw:0,0&lt;/param&gt;
&lt;param name=&quot;metadata&quot;&gt;1&lt;/param&gt;
&lt;!--Localizaci&#243;n de un fichero metadata.--&gt;
&lt;param name=&quot;metadatafilename&quot;&gt;./metadata&lt;/param&gt;
&lt;/input&gt;

&lt;!--Datos del Servidor Icecast2--&gt;
&lt;instance&gt;
&lt;hostname&gt;127.0.0.1&lt;/hostname&gt;
&lt;port&gt;8000&lt;/port&gt;
&lt;username&gt;source&lt;/username&gt;
&lt;password&gt;source&lt;/password&gt;
&lt;mount&gt;/radio-beastieux.ogg&lt;/mount&gt;
&lt;yp&gt;1&lt;/yp&gt;

&lt;encode&gt;
&lt;!--Datos de la velocidad de transmisi&#243;n, calidad--&gt;
&lt;minimum-bitrate&gt;48000&lt;/minimum-bitrate&gt;
&lt;maximum-bitrate&gt;64000&lt;/maximum-bitrate&gt;
&lt;nominal-bitrate&gt;64000&lt;/nominal-bitrate&gt;
&lt;samplerate&gt;44100&lt;/samplerate&gt;
&lt;!--Calidad de codificaci&#243;n del bitrate. Va de 0 a
10. Interesa tener un valor bajo para conexiones
modestas--&gt;
&lt;quality&gt;1&lt;/quality&gt;
&lt;!--N&#250;mero de canales de la entrada --&gt;
&lt;channels&gt;2&lt;/channels&gt;
&lt;/encode&gt;

&lt;downmix&gt;1&lt;/downmix&gt;
&lt;resample&gt;
&lt;in-rate&gt;44100&lt;/in-rate&gt;
&lt;out-rate&gt;44100&lt;/out-rate&gt;
&lt;/resample&gt;

&lt;/instance&gt;
&lt;/stream&gt;
&lt;/ices&gt;

Para emitir el stream sólo lanzar este comando:

$ices2 ices2-live.xml

Luego pueden hablar por el micro o ayudarse con reproductores y sintetizadores para la transmisión, que todo lo que salga por el audio desde su ordenador se estará transmitiendo en vivo.

Modo Playlist: Para Emitir Streaming desde una lista con las direcciones del audio:

$nano /home/beastieux/iceconf/ices2-playlist.xml
&lt;?xml version='1.0'?&gt;
&lt;ices&gt;
&lt;background&gt;0&lt;/background&gt;
&lt;logpath&gt;/var/log/icecast2&lt;/logpath&gt;
&lt;logfile&gt;ices.log&lt;/logfile&gt;
&lt;loglevel&gt;4&lt;/loglevel&gt;
&lt;consolelog&gt;1&lt;/consolelog&gt;

&lt;stream&gt;
&lt;metadata&gt;
&lt;name&gt;Radio Beastieux&lt;/name&gt;
&lt;genre&gt;rock-metal-bossa-chilli&lt;/genre&gt;
&lt;description&gt;Radio con la mejor musica de mi computadora&lt;/description&gt;
&lt;url&gt;https://beastieux.com&lt;/url&gt;
&lt;/metadata&gt;
&lt;!-- El &lt;input&gt; es lo &#250;nico diferente al fichero ices2-live.xml --&gt;
             &lt;input&gt;
                       &lt;module&gt;playlist&lt;/module&gt;
                       &lt;!--Indicar el sitio donde tenemos la lista de reproducci&#243;n--&gt;
                       &lt;param name=&quot;file&quot;&gt;/home/beastieux/iceconf/playlist.m3u&lt;/param&gt;
                       &lt;param name=&quot;type&quot;&gt;basic&lt;/param&gt;
                       &lt;!--reproduce en modo random--&gt;
                       &lt;param name=&quot;random&quot;&gt;1&lt;/param&gt;
                       &lt;!--A valor 0 reproduce la lista
                              continuamente.&quot;--&gt;
                       &lt;param name=&quot;once&quot;&gt;0&lt;/param&gt;
                       &lt;param name=&quot;rate&quot;&gt;44100&lt;/param&gt;
                       &lt;param name=&quot;channels&quot;&gt;2&lt;/param&gt;
                       &lt;param name=&quot;device&quot;&gt;/dev/dsp&lt;/param&gt;

<pre><code>           &amp;lt;/input&amp;gt;
</code></pre>

&lt;instance&gt;
&lt;hostname&gt;127.0.0.1&lt;/hostname&gt;
&lt;port&gt;8000&lt;/port&gt;
&lt;username&gt;source&lt;/username&gt;
&lt;password&gt;source&lt;/password&gt;
&lt;mount&gt;/radio-beastieux.ogg&lt;/mount&gt;
&lt;yp&gt;1&lt;/yp&gt;

&lt;encode&gt;
&lt;!--Datos de la velocidad de transmisi&#243;n--&gt;
&lt;minimum-bitrate&gt;48000&lt;/minimum-bitrate&gt;
&lt;maximum-bitrate&gt;64000&lt;/maximum-bitrate&gt;
&lt;nominal-bitrate&gt;64000&lt;/nominal-bitrate&gt;
&lt;samplerate&gt;44100&lt;/samplerate&gt;
&lt;!--Calidad de codificaci&#243;n--&gt;
&lt;quality&gt;1&lt;/quality&gt;
&lt;!--N&#250;mero de canales de la entrada --&gt;
&lt;channels&gt;2&lt;/channels&gt;
&lt;/encode&gt;

&lt;downmix&gt;1&lt;/downmix&gt;
&lt;resample&gt;
&lt;in-rate&gt;44100&lt;/in-rate&gt;
&lt;out-rate&gt;44100&lt;/out-rate&gt;
&lt;/resample&gt;

&lt;/instance&gt;
&lt;/stream&gt;
&lt;/ices&gt;

Crear la lista de reproducción:
La lista de reproducción solo es una lista con las direcciones de los archivos de audio, en este caso deben de ser OGG, el fichero debe constar de una dirección por linea. Si tienen un directorio con músicas podrían generar el fichero.m3u automáticamente con algo como:

$find /media/sda2/musicas/ -name "*ogg" > ~/iceconf/playlist.m3u

Para ejecutar el modo automático de emisión desde un playlist con los audios (ogg) añadidos:

$ices2 ices2-playlist.xml

Si quieren escuchar la transmisión vía web pueden ingresar al punto de montaje configurado, para este ejemplo el punto de montaje fue radio-beastieux.ogg, por lo cual accederemos a: http://127.0.0.1:8000/radio-beastieux.ogg

Por último, tanto la ejecución en modo live como en modo playlist con ices2 no debe de niguna manera devolvernos al promt del terminal, si eso ocurre es porque los ficheros están mal configurados o el servidor no está iniciado correctamente. Si todo ha salido bien entonces tendrían su servidor de Icecast básicamente configurado y listo para empezar a emitir normalmente, podrian empezar a transmitir para el mundo entero.

10 thoughts on “Instalación y Configuración de un Servidor de Streaming Multimedia con IceCast

  1. Esto es ¡genial! No he leído algo como esto en mucho tiempo . Es agradable encontrar a alguien con algunas ideas propias sobre este tema. Este sitio web es algo que se necesita en Internet , alguien con un poco de sinceridad. Un trabajo útil para traer algo nuevo a Internet. Gracias de todos lo que te leemos.

  2. HOLA UNA PREGUNTA Y COMO PUEDO HACER UN STREAMING DE VIDEO CON UNA CAPTURADORA PARA PODER HACER UN STREAMING DE VIDEO EN MI WEB ALGO ASÍ COMO USTREAM SALUDOS

  3. Saludos, y gracias por darme la oportunidad de hacer las consultas, tengo 4 radios con icecast, pero como puedo hacer para que cada Radio tenga su contraseña diferente en su mount? pues todas funcionan con la misma contraseña que tiene la mount o sea este:

    source

    source

    admin

    admin

    Trate de agregar otra linea igual a esta o sea asi:

    primeracontraseña
    segundacontraseña

    source

    admin

    admin

    pero no me funciona unicamente las 4 funcionan solo con la misma y me gustaria ponerle diferentes a cada una, es posible hacerlo? y como seria? Muchas Gracias
    Nota: e probado hacerlo con icecast2 para linux y con icecast2 para windows pero no lo e logrado.

    1. Hola Luis, se que sambroadcast tiene soporte para icecast, entonces si es posible emitir desde el. Configurar el sam con los parametros del servidor, puerto, etc. Saludos.

Deja un comentario