Montar un Servidor de streaming

By 1 de enero de 2007 Linux 21 Comments

tux.jpgEl servidor de stream elegido es Icecast 2 (http://www.icecast.org/) porque después de mucho buscar vi que era el que mejores opciones proporciona. Entre ellas el poder retransmitir usando ogg vorbis. Un códec de audio libre de compresión con pérdidaDescargamos las fuentes:

# wget -c http://downloads.xiph.org/releases/icecast/icecast-2.3.1.tar.gz
# tar xzvf icecast-2.3.1.tar.gz
# cd icecast-2.3.1/
# ./configure && make && make install

Esto te instala el servidor y lo único que queda por hacer es configurarlo. Para hacer esto nos vamos a /etc/icecast y ahí veremos una serie de archivos.

El que a nosotros nos interesa es el siguiente: icecast.xml. En este archivo se configuran los parámetros del servidor.

icecast.xml

Como veremos en cuanto abramos el archivo es que es un archivo en formato xml.
Este archivo tiene una serie de secciones que si queremos entender mejor o queremos afinar más el rendimiento del servidor hay que irse a http://www.icecast.org

Lo primero que vamos a ver es el número de clientes que queremos tener. Pensad en vuestro ancho de banda y obrad en consecuencia, en mi caso como es para uso personal solo he puesto 2:

Luego viene la parte de autentificación que usa el servidor para permitir que administradores y codificadores se conecten a él. Para ello ponemos la contraseña que queramos: la contraseña queda totalmente visible.

El source-password es la contraseña que se va a solicitar a nuestro codificador, con lo cual nos tenemos que acordar de ella para luego usarla en el codificador.

El relay-password es la contraseña que se utilizaría en caso de que hiciéramos relay de otros streaming de Internet a través del nuestro. Finalmente queda el usuario y contraseña para administrar el servidor Icecast 2.

La siguiente parte que nos interesa de la configuración es la relacionada con la red. En esta parte configuraremos en qué tarjetas de red y puertos se retransmitirá y se escucharán las peticiones.

La parte de la red comienza con el siguiente cacho de configuración: El que veréis sirve para indicar el nombre de la máquina, es cómo el servidor obtiene qué tarjetas transmiten. En este caso yo para poder transmitir a Internet tengo un dyndns (un nombre de máquina gratuito) de forma que es ese el nombre que le pongo. Aquí podéis poner lo que querais, pero tiene que corresponder con una IP asociada, es decir si ponéis localhost asociaríais el puerto al 127.0.0.1, sino a otra IP.Luego podéis eligir el puerto que más os guste, pero creo que lo mejor es dejarlo en dónde está pues es el estandar de Icecast 2 (shoutcast usa el 8001).

Finalmente se pueden crear sockets asociados a IPs, esta parte la podéis modificar como queráis también, pero yo he dejado todo como estaba menos la parte del pues necesito transmitir hacia Internet.Con todo esto tendríamos configurado ya el servidor. Ahora sólo queda hacer:

# /etc/init.d/icecast2 start

Ices el codificador

Bien, en esta parte empieza lo que puede resultar un poco complicado. En Debian sólo tenemos la versión 2.0 de Ices porque codifica y retransmite solo en Ogg Vorbis. El problema asociado a este codificador es que para hacer una lista de reproducción necesita que todos los archivos fuente sean .ogg. Pero mi colección de archivos está en .mp3 con lo que este codificador no me servía, pues para hacerlo funcionar tenía que pasar todos mis mp3 a ogg. Entonces encontré en la página de Icecast http://www.icecast.org otra versión de Ices, la 0.4.

Añadir que la versión 2.0 de Ices permite leer listas de reproducción de archivos .ogg y retransmitir voz en directo. Esta parte es fácil de configurar y sólo teneis que leer este How to.

La versión 0.4 sirve para listas de reproducción, pues nos lee tanto archivos en mp3 como en ogg y los recodifica a mp3. Aquí hay que hacer una advertencia: al transmitir en mp3 podemos tener problemas legales, pues hay que recordar que el mp3 está registrado. En este caso a mi no me afecta pues yo solamente voy a transmitir para mi mismo en casa o en el trabajo, con lo que no voy a tener problemas de ningún tipo.

Otro "inconveniente es que no hay paquete .deb" con lo que hay que descargarse un tar.gz y compilarlo. Se necesita como dependencias externas: Lame encoder, pues necesita un codificador, y las librerías de desarrollo de XML, Vorbis, Perl y Phython. Estos últimos desde Debian es muy sencillo. Yo solo necesité obtener las librerías -dev de XML. Lo demás lo tenía todo.

# wget -c http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz
# tar xzvf ices-0.4.tar.gz
# cd ices-0.4/
# ./configure && make && make install
El codificador LAME os lo tenéis que descargar de su página web y compilarlo.

Con esto ya podréis compilar Ices 0.4.

Ahora queda configurar Ices 0.4. En función del

prefix

que uséis el archivo ices.conf se encontrará en un sitio u otro. El caso es que el archivo se llama ices.conf.

ices.conf

En este archivo especificaremos los parámetro de codificación y conexión al servidor Icecast 2. El archivo usa XML, al igual que Icecast 2.

Lo primero que encontramos es la lista de canciones que queremos que se retransmitan por Internet. Ahí pondremos el archivo con la lista de canciones tanto en mp3 como en ogg que tengamos en nuestro ordenador. Para generar una lista usaremos este comando:

# find /home/icecast/music | grep .ogg > playlist.txt
# find /path/to/audio/files -type f -name "*.mp3" -fprint playlist.txt (mejor este)

La siguiente parte que configuraremos es la conexión al servidor y la "emisora" que usaremos para retransmitir.Aquí se pone el nombre del servidor al que queremos conectarnos para retransmitir, el puerto y la contraseña. El resto no se toca pues vamos a transmitir a un servidor Icecast 2 y ya está configurado para eso. Y ya queda lo más sencillo

/ices

El Mountpoint es la "emisora". Es decir nosotros cuando conectamos con un servidor de radio por Internet ponemos el servidor y el puerto en el que se sirve la música, pero también indicamos la "emisora":

# mplayer http://servidor:puerto/emisora

Esto permite que un mismo servidor haga streaming de distintos tipos de música a la vez. En el ejemplo de arriba nuestra emisora se llamaría ices. Podéis poner lo que queráis.

Nos queda la descripción de la emisora:

Y la recodificación (si queremos) de los archivos de la lista:

Si no recodificamos la transmisión por Internet se hace a la que esté el archivo fuente, pudiendo ser muy costoso para una transmisión fluida por Internet. Yo estoy usando un Bitrate de 64 y se escucha muy bien, a 128 no conseguía escucharla de seguido pues el buffer del cliente se vaciaba rapidísimo. Para recodificar hay que indicarlo en:

Sólo nos queda elegir si transmitimos en Mono o en Stereo. En los tutoriales que me he leido por Internet todos recomiendan Mono porque consume menos ancho de banda. Esta última parte se afina más al gusto del consumidor y de su línea de Internet. Ahora ya sólo queda ejecutar el codificador:
# ices -c /donde-esté/ices.conf

Se conectará al servidor Icecast y ya podréis escuchar la música con vuestro reproductor favorito.

Si se quiere montar la emisora desde la linea de comandosse debe picar algo como esto:

# ices -v -F /home/icecast/music/playlist.txt -m music -h 192.23.534.12 -P hackme

Y así vemos si Icecast lo 've'.

Adjunto una configuración válida:

ices_04.png

Si algo os falla mirad los logs que son muy fáciles de entender.
Espero que con esto podáis hacer lo que yo: escuchar mi música siempre que tenga una conexión a Interrnet.

21 Comments

  • Andros dice:

    ...
    Si se quiere montar la emisora desde la linea de comandosse debe picar algo como esto:

    # ices -v -F /home/icecast/music/playlist.txt -m music -h 192.23.534.12 -P hackme
    ...

    Si te hubieran hecho caso ... con esos rangos de IP's no tendriamos problemas de direccionamiento jejejeje. No se acabarian tan pronto!

  • Andros dice:

    Por cierto ... tienes la hora mal. Son las 10:00am. Vas una hora adelantado a tu tiempo.

  • Solusan dice:

    Se abre el telón y se ven tres vectores linealmente dependientes, Como se llama la pelicula?

    Rago 3

    XD

    (Si te hubieran hecho caso … con esos rangos de IP’s no tendriamos problemas de direccionamiento jejejeje. No se acabarian tan pronto!)

  • Cyberx dice:

    Mi sistema es Win Xp y nose komo hacer para instalar este sistema en bajo windows

  • MoKi dice:

    Prueba esto:
    1. Formatea tu PC
    2. Instala Linux
    3. Disfruta con un sistema operativo que te permita hacer lo que quires, y no lo que a otro se le ocurra que puedes hacer.

    Saludos.

  • Solusan dice:

    Cyberx:

    También estaría muy bien que repasaras un poco el libro de lengua Española.

    No cuesta mucho, y ganas mucho más, créeme.

    Por cierto, hazle caso a Moki, sabe lo que dice ;)

    Aúpa con la música!!

  • gerco dice:

    como añado la posibilidad de utilizar un microfono para hablar por la "emisora"

  • Rodolfo dice:

    Pregunta.Puedo trasmitir video en vivo por mi webcam?.

  • freddy dice:

    no he logrado configurarlo bajo el paquete, pero no me compila, instalo los compiladores y nada POR FAVOR, si tengo que instalar o tener en cuenta algo mas quisiera tu ayuda, muchas gracias

  • [...] Sigue leyendo el post original Entradas relacionadas:Completa reproducción multimedia en OpenSuse 11.2Instalar entorno gráfico minimo en OpenSuse 11.2 (sistema instalado)Un nuevo blog ha nacido, OpenSuse elAyo Linux, online, streaming, video Dejar un comentario Trackback [...]

  • Jorge dice:

    Qué distribución recomiendan uds. como las más óptima para un server de streaming (solo audio) a base de codificación en vivo desde la tarjeta de audio.

    El 2000 usaba Redhat 7 y monté un server bueno, pero el 2002 dejé linux por temas laborales y ahora quiero reiniciarme, así que estoy bsucando una distro adecuada.

    Sugerencias por favor ...

    Saludos desde Chile

  • Solusan dice:

    Sólo lo quieres para streaming?

  • MIIGUEL dice:

    hola soy de argentina como puedo sacar mu radio x interet capo ayudassssss
    ME ENSEÑAN PLISSS

  • age dice:

    Gracias, solo una pregunta... Para tener Radio en internet ¿hay que pagar los derechos de autor? o estás haciendo algo ilegal....

    Un saludo!

  • Jorge Ameridith Blascasound dice:

    Hola solo queria saber como obteniendo una IP de trasmision de TV , lograr que esta se retrasmita a un minimo bitrate para poder ver la trasmision fluida en mi Palm TX

  • Alex Arenas dice:

    Hola tengo un hosting y deseo colocar una emisora o un servidor para subir las canciones de la iglesia, me pueden explicar como realiarlo.

    Gracias.

  • V@ness@ dice:

    Hola, me estoy iniciando en el mundo del software libre y quisiera saber, qué sistema operativo es mejor para implementar un servidor de streeming y trabajar con VOZIP y IPTV. Lindo día

  • jose dice:

    hola, sabes cuando coloco la configuracion que tienes en rojo de mas arriba al tratar de que parta el servidor no me corre me sale el error xml. que puedo hacer en ese caso ????

  • Silverio dice:

    Hola a todos, soy nuevo, y por lo tanto novato... lo que me esta rompiendo la cabeza hace mas de 6 meses es tener un servidor de streaming en mi hosting de pago.
    Tengo hospedado mi web en un hosting de pago, pero he investigado mucho y no logro encontrar algun programa o algo que me ayude a transmitir sonido desde mi casa al servidor y que este envie el sonido a todos los oyentes, logrando con esto tener mas oyentes sin perder ancho de banda, ya que se va a estar utilizando el ancho de banda de mi hosting de pago porque alli es donde tiene que estar el servidor.
    He encontrado muchos programas para montar servidor de streaming, pero estos los tengo que tener alojados en mi pc y si es asi, al transmitir el audio no llegaria a muchos oyentes porque mi ancho de banda no aguantaria. agradeceria la respuesta de algunos cnocedores del tema. Muchas gracias ante todo...

  • Juan Carlos Noguera dice:

    Jajajaja, tremendo el rango de IPs.

  • Gustavo dice:

    gente solo quiero poner la radio en Internet, me pueden explicar como hacerlo??? Soy de Argentina y el sistema es Windows XP
    Gracias

Leave a Reply

Your email address will not be published.