[Jautu] Montar servidor local de Shoutcast para streaming de música en espera en Asterisk

17 05 2008

[How-to] Music on Hold for Asterisk using local Shoutcast Streaming Server

Tras un intercambio de mensajes con algunos compañeros de lista de Asterisk-es, me picó el gusanillo de probar el streaming de audio en Asterisk, concretamente, para la música en espera. La verdad es que fue muy sencillo y seguidamente (el famoso término andaluz-español “poyaque”) pensé en hacer la gracia completa montando mi propio servidor shoutcast para servir la música desde un servidor de la red local.

La idea fundamental es poder usar radios on-line como fuente para el audio de Asterisk.

Todo el conjunto será montado sobre Fedora Core 8, aunque las instrucciones son similares para Centos, RedHat y asimilados…

Servidor Shoutcast para linux

Tengo que confesar que me sorprendió muchísimo la facilidad con la que uno puede montar este servicio en una máquina linux. Acostumbrado a compilar, retocar, parchear y demás florituras no habituales para un esclavo de Bill, tengo que confesar que no tardé más de unos pocos minutos en bajar y tener andando el asunto.

Lo primero que haremos será descargar el paquete correspondiente desde la página de nullsoft.
En nuestro caso, el paquete para linux.

cd /usr/src
wget http://www.shoutcast.com/downloads/sc1-9-8/sc_serv_1.9.8_Linux.tar.gz
tar -zxvf sc_serv_1.9.8_Linux.tar.gz

Al descomprimir se crean tres ficheros

Readme.txt
sc_serv.conf
sc_serv

Pues bien, sólo hay que modificar unos pocos parámetros del archivo de configuración (.conf) y ejecutar el script (sc_serv) y ya tendremos el servidor montado. Concretamente, deberemos modificar en sc_serv.conf

MaxUser=32   # Ponemos el número de usuarios concurrentes que podemos atender
             # según nuestro ancho de banda
Password= <contraseña_segura>    # la usaremos para enviar audio desde plugins para winamp
PortBase=8000   # puerto por el que servimos el streaming

Con esto ya tendríamos una configuración mínima para echar a andar

chmod +x sc_serv
./sc_serv

Y ya tendríamos el servidor levantado y esperando recibir audio para servirlo a los clientes. A mi me interesaba recibir audio a través de radios online, así que tuve que modificar ciertos parámetros en sc_serv.conf

RelayPort= <Puerto_maquina>    # puerto del servidor externo de streaming
RelayServer= <IP_maquina>      # ip del servidor externo de streaming

Hay que tener cuidado porque no todas las radios online permiten ser “repetidores” de su señal, así que habrá que probar hasta dar con una que nos acepte y nos guste, claro 😉

Música en Espera para Asterisk usando el streaming de shoutcast

Procedemos a instalar madplay, el cual es un decodificador de audio muy bueno y que mejora al mpg123 que trae asterisk.

Primero instalamos unas dependencias necesarias (recuérdese que se está usando FC8). Si tenemos otra distribucion, podemos encontrar los paquetes necesarios en http://rpm.pbone.net

yum install libid3tag
wget ftp://ftp.pbone.net/mirror/atrpms.net/f8-i386/atrpms/stable/libmad0-0.15.1b-3.fc8.i386.rpm
rpm -ivh libmad0-0.15.1b-3.fc8.i386.rpm

Y ahora instalamos madplay

wget ftp://ftp.pbone.net/mirror/rpm.livna.org/fedora/8/i386/madplay-0.15.2b-4.lvn6.i386.rpm
rpm -ivh madplay-0.15.2b-4.lvn6.i386.rpm

Por último nos creamos el script mohstream.sh

nano /etc/asterisk/mohstream.sh (pegamos lo que viene a continuación)

/usr/bin/wget -q -O - http://160.79.128.242:8000 | /usr/bin/madplay -Q -z -o raw:- --mono -R 8000 -a -12 -

Damos permisos de ejecución

chmod +x /etc/asterisk/mohstream.sh

Ya sólo queda indicarle a asterisk que usaremos este script para la música en espera:

[streamingpaco]
mode=custom
dir=/var/lib/asterisk/moh/streampaco
application=/etc/asterisk/mohstream.sh

En nuestro archivo extensions.conf, usaremos la clase [streamingpaco] para la música en espera que creamos oportuno

exten => 123,1,Answer()
exten => 123,n,MusicOnHold(streamingpaco)
Anuncios

Acciones

Information

4 responses

28 05 2008
ramoncio

Hola Paco,
He seguido tus instrucciones (y las de unas cuantas páginas más) pero no consigo que me funcione. Esto es lo que me dice la consola:

— Started music on hold, class ‘stream’, on channel ‘SIP/121-08dd2ae0’
— Stopped music on hold on SIP/121-08dd2ae0

Se para inmediatamente.

Se te ocurre qué puede ser? Permisos?

29 05 2008
ualtech

ten cuidado con las radios que eliges, porque muchas de ellas no te permiten que hagas de “repetidor”. A mi me paso con las 3 o 4 primeras, hasta que encontré una que me funcionó ;(
Prueba a montar el servidor de streaming pelado, e inyéctale el audio deseado con el pluggin que hay para winamp (está en la página de shoutcast) y mira si anda bien tu server con otro winamp (lo anterior supongo que en windows). Ten en cuenta que en este paso no es necesario configurar RelayServer y RelayPort.
Si todo va bien con la radio deseada, realiza los pasos nuevamente incluyendo RelayServer y RelayPort de tu fuente de audio en internet.
A partir de aquí tienes asegurado que el audio va bien y te puedes centrar más en depurar asterisk.
¿se te instalaron bien libid3tag y libmad? Asegúrate que sean las correctas para tu distribución linux.
Si has seguido el jautu, debería aparecer “streamingpaco” en vez de “stream”, aunque supongo que esto ya lo habrás cambiado tú, pero asegúrate…

saludos,

29 05 2008
ramoncio
19 07 2010
SMasH

Hola, creo que lso primeros parametros me servirian, pero haber si entendi por favor dime emilio, Que Version de Linux Instalo en la PC ? esto por que:

Yo quiero hacer un servidor con el cual configurar un Ip y puerto fijo para Stream, y asi desde una pc con Windows poder transmitir conectandome al servidor que hice en linux, si entendi mal o si me puedes explicar de una mejor manera porfavor mandame un mail.

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




A %d blogueros les gusta esto: