LinuxParty

Ratio: 3 / 5

Inicio activadoInicio activadoInicio activadoInicio desactivadoInicio desactivado
 

En este tutorial explicaremos la creación de su propio servidor de streaming de audio con Icecast (OGG/MP3). Icecast fue diseñado para transmitir cualquier archivo de audio si un cliente de streaming apropiado está disponible. Para OGG / Vorbis puede utilizar icegenerator MP3. Aquí hay un pequeño tutorial de cómo configurar Icecast para el streaming OGG / Vorbis y MP3.

Este artículo contiene los siguientes temas:

Configuración del servidor: Icecast
Configurar el cliente OGG / Vorbis streaming: ices
Configurar el cliente de streaming MP3: icegenerator

Configuración del servidor: Icecast

En primer lugar obtener el software:

# yum groupinstall "Development Tools"
# yum install -y curl-devel libtheora-devel libvorbis-devel libxslt-devel speex-devel libxslt
# rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# cd /home
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# mkdir -p /usr/src/icecast
# cd /usr/src/icecast
# wget http://downloads.xiph.org/releases/icecast/icecast-2.3.3.tar.gz

A continuación extraiga las fuentes y cambiar al nuevo directorio:

# tar xf icecast-2.3.3.tar.gz
# cd icecast-2.3.3

A continuación, configure las fuentes:

# ./configure --prefix=/opt/icecast/2.3.3

Y finalmente compilar el código fuente y los binarios de instalación:

# make
# make install

Debe tener ahora el binario icecast bajo /opt/icecast/2.3.3/latest/bin:

# ls /opt/icecast/2.3.3/bin/icecast *

Ahora ve al directorio icecast y enlace el directorio a latest (la última versión):

# cd /opt/icecast
# ln -s 2.3.3 latest

Ahora configure icecast editando el archivo icecast.xml. Lo primero mover el archivo de ejemplo original a un lugar alternativo:

# cd /opt/icecast/latest/etc
# mv icecast.xml icecast.xml.orig
# vi icecast.xml

<icecast>
   
     <!-- LIMITS -->
     <limits>
       <clients>100</clients>
       <sources>10</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>
   
     <!-- GENRIC -->
     <authentication>
       <source-password>password</source-password>
       <admin-user>admin</admin-user>
       <admin-password>password</admin-password>
     </authentication>
     <hostname>MyHost/IP</hostname>
     <listen-socket>
       <port>8000</port>
     </listen-socket>
     <fileserve>1</fileserve>
   
     <!-- PATHES -->
     <paths>
       <basedir>/opt/icecast/latest/share/icecast</basedir>
       <webroot>/opt/icecast/latest/share/icecast/web</webroot>
       <adminroot>/opt/icecast/latest/share/icecast/admin</adminroot>
       <logdir>/var/log/icecast</logdir>
       <pidfile>/var/run/icecast/icecast.pid</pidfile>
       <alias source="/" dest="/status.xsl"/>
     </paths>
   
     <!-- LOG -->
     <logging>
       <accesslog>access.log</accesslog>
       <errorlog>error.log</errorlog>
       <playlistlog>playlist.log</playlistlog>
       <loglevel>1</loglevel>
       <logsize>10000</logsize>
       <logarchive>1</logarchive>
     </logging>
   
     <!-- SECURITY -->
     <security>
       <chroot>0</chroot>
       <changeowner>
         <user>icecast</user>
         <group>icecast</group>
       </changeowner>
     </security>
   
   </icecast> 

El anterior icecast.xml es muy simple. Los límites de la primera sección define el número de máximo de estaciones de radios que desee proporcionar (fuentes = 10), la cantidad de clientes que pueden conectarse (clientes = 100), etc

La segunda sección GENERIC define un nombre de usuario, nombre de host myhost / IP), el puerto (8000) para el propio servidor, etc

La sección PATHES define las Rutas al webgui.

Icecast tiene un pequeño y fácil webgui para ver lo que está pasando y esta sección define dónde encontrar los documentos web.

La sección LOG, por supuesto, para el registro, dónde y qué iniciar etc

La Sección de Seguridad establece sí el software Icecast debe ejecutarse bajo el usuario icecast y el grupo icecast.

Ahora necesitamos tres cosas más que hacer: crear un usuario y un grupo llamado icecast tal como se define en el archivo de configuración icecast.xml creando el ambiente para los registros y un lugar para el archivo pid.

En primer lugar crear el usuario icecast con el ID 200 y el grupo icecast con el ID 200:

# groupadd -g 200 icecast
# useradd -d /var/log/icecast -m -g icecast -s /bin/bash -u 200 icecast

Con la opción -m puede establecer el directorio de los LOGs creados automáticamente y el segundo paso puede ser guardado.  Ahora sólo necesita establecer el directorio para el archivo pid:

# mkdir -p /var/run/icecast
# chown -R icecast:icecast /var/run/icecast

Vamos a darle una oportunidad e iniciar el servidor icecast:

# /opt/icecast/latest/bin/icecast -c /opt/icecast/latest/etc/icecast.xml -b

Starting icecast2
Detaching from the console
Changed groupid to 200.
Changed userid to 200.

Su servidor está ejecutando como el usuario icecast y los registros se produjeron en /var/log/icecast:

# ls /var/log/icecast/

access.log error.log playlist.log

Compruebe que esté realmente funcionando:

# pgrep -fl icecast

4434 /opt/icecast/latest/bin/icecast -c /opt/icecast/latest/etc/icecast.xml -b

También el servidor icecast debe ser accesible a través del webgui dado bajo su nombre de host y el puerto, por ejemplo, http://MyHost/IP:8000/, cuando usted tenga configurado una o más estaciones se mostrarán aquí. El usuario de la webgui administrativo se define en el archivo de arriba icecast.xml - icecast. La clave en este caso es password.



Configurar el cliente OGG / Vorbis streaming: ice

Antes de poder compilar ice necesita la biblioteca libshout. Primero descargar:

# cd /usr/src/icecast
# wget http://downloads.us.xiph.org/releases/libshout/libshout-2.3.1.tar.gz

A continuación, extraer el archivo tar y cambiar al nuevo directorio:

# tar xf libshout-2.3.1.tar.gz
# cd libshout-2.3.1

Ejecute el script configure:

# ./configure --prefix=/opt/icecast/latest

Y compilar las fuentes e instalar la biblioteca:

# make
# make install

Ahora descargar el cliente de ices:

# cd /usr/src/icecast
# wget http://downloads.us.xiph.org/releases/ices/ices-2.0.2.tar.bz2

Extraiga el archivo tar y el cambie al nuevo directorio:

# tar xf ices-2.0.2.tar.bz2
# cd ices-2.0.2/

Antes de ejecutar el script de configuración, exporte la variable PKG_CONFIG_PATH para poder incluir la biblioteca libshout:

# export PKG_CONFIG_PATH=/opt/icecast/latest/lib/pkgconfig:$PKG_CONFIG_PATH
# ./configure --prefix=/opt/icecast/latest

Ahora compila el código fuente y los binarios de instalación:

# make
# make install

Compruebe que el cliente de ices está disponible:

# ls /opt/icecast/latest/bin/

icecast* ices*

Por último, configure el cliente de ices y cree su primera emisora de radio OGG / Vorbis:

# cd /opt/icecast/latest/etc/
# vi ices1.xml

 <ices>
   
     <!-- GENERIC -->
     <background>1</background>
     <pidfile>/var/run/icecast/ices1.pid</pidfile>
   
     <!-- LOGGING -->
     <logpath>/var/log/icecast</logpath>
     <logfile>ices1.log</logfile>
     <logsize>2048</logsize>
     <loglevel>3</loglevel>
     <consolelog>0</consolelog>
   
     <!-- STREAM -->
     <stream>
       <metadata>
         <name>RadioStation 1: OGG</name>
         <genre>Varios</genre>
         <description>Test Radio 1</description>
         <url>http://MyHost/IP:8000/</url>
       </metadata>
       <input>
         <param name="type">basic</param>
         <param name="file">/opt/icecast/latest/etc/playlist1.txt</param>
         <param name="random">1</param>
         <param name="once">0</param>
         <param name="restart-after-reread">1</param>
       </input>
       <instance>
         <hostname>MyHost/IP</hostname>
         <port>8000</port>
         <password>password</password>
         <mount>/radiostation1</mount>
       </instance>
     </stream>
   
   </ices>
  

El archivo de configuración de ices es tan fácil como el archivo de configuración de Icecast. La sección GENERIC define ejecutar ices en segundo plano y donde el archivo pid puede ser encontrado.

La sección LOGGING es toda acerca del registro, dónde y qué registrar. La sección STREAM necesita un poco más de atención. Se define la estación de radio así como el nombre de la estación, donde el servidor icecast puede llegar etc

La contraseña es la contraseña de origen del archivo de configuración icecast. Si no establece una contraseña, todo el mundo puede conectarse a su servidor Icecast y crear una emisora.

Una cosa más: la lista de reproducción. La lista de reproducción es un archivo de texto plano y contiene todas las canciones que desea reproducir.

Todos los archivos OGG / Vorbis dentro de este archivo debe tener la ruta completa, por ejemplo:

# cd /opt/icecast/latest/etc/
# vi playlist1.txt

 

/music/artist/album/song1.ogg
/music/artist/album/song2.ogg

Puede crear esta lista es muy fácil encontrar:

# find /music/artist/album/ -name "*.ogg" > /opt/icecast/latest/etc/playlist1.txt

Con el archivo de configuración de ices Y la lista de reproducción creada, Inicie ices, como el usuario icecast:

# su - icecast -c "/opt/icecast/latest/bin/ices /opt/icecast/latest/etc/ices1.xml"

Ahora eche un vistazo en el archivo de registro:

# cat /var/log/icecast/ices1.log

[2011-12-16 12:17:05] INFO signals/signal_usr1_handler Metadata update requested
[2011-12-16 12:17:05] INFO playlist-basic/playlist_basic_get_next_filename Loading playlist from file "/opt/icecast/latest/etc/playlist1.txt"
[2011-12-16 12:17:05] INFO playlist-builtin/playlist_read Currently playing "/music/artist/album/song2.ogg"
[2011-12-16 12:17:05] INFO stream/ices_instance_stream Connected to server: MyHost/IP:8000/radiostation1

...

Como se puede ver la primera estación de radio está listo y disponible bajo http://MyHost/IP:8000/radiostation1

Ahora intenta conectarse a su servidor de streaming con un cliente de audio y disfrutar escuchando su radio.

Para cada estación de radio que desea proveer es necesario crear un archivo de configuración de ices  con su propia lista de reproducción, etc Eg. puede crear una estación de radio independiente para la música Rock y una estación de radio independiente para la música pop.



Configurar el cliente de streaming MP3: icegenerator

Para transmitir archivos MP3 necesita un cliente de streaming como icegenerator. Antes de poder compilar icegenerator usted tiene que instalar libshout primero.

# cd /usr/src/icecast
# wget http://downloads.us.xiph.org/releases/libshout/libshout-2.3.1.tar.gz

A continuación, extraer el archivo tar y cambiar al nuevo directorio:

# tar xf libshout-2.3.1.tar.gz
# cd libshout-2.3.1

Ejecute el script configure:

# ./configure --prefix=/opt/icecast/latest

Y compilar las fuentes e instalar la biblioteca:

# make
# make install

Para compilar icegenerator descargar el paquete fuente de http://sourceforge.net/projects/icegenerator/ y guárdelo en el directorio src. A continuación, vaya al directorio src y extraer la fuente:

# cd /usr/src/icecast
# wget http://netcologne.dl.sourceforge.net/project/icegenerator/icegenerator/0.5.5-pre2/icegenerator-0.5.5-pre2.tar.gz
# tar xfz icegenerator-0.5.5-pre2.tar.gz
# cd icegenerator-0.5.5-pre2

Ahora ejecuta el script de configuración (la opción --prefix se tendrá en cuenta, basta con ejecutar el script de configuración sin la opción --prefix):

# ./configure

Y compilar el código fuente y los binarios de instalación:

# make
# make install

Compruebe que icegenerator está disponible:

# ls -lah /usr/local/bin/ice*

-rwxr-xr-x 1 root root 55K 2011-12-16 12:41 /usr/local/bin/icegenerator*

Ahora configure icegenerator y crear su primera estación de radio MP3:

# cd /usr/local/etc
# vi icegen1.cfg

IP=192.168.1.100
PORT=8000
SERVER=2
MOUNT=/radiostation2
PASSWORD=password
FORMAT=1
MP3PATH=m3u:/usr/local/etc/playlist2.m3u
LOOP=1
SHUFFLE=1
NAME=RadioStation 2: MP3
DESCRIPTION=Test Radio
GENRE=Varios
URL=http://MyHost/IP:8000/
LOG=2
LOGPATH=/var/log/icecast/icegen1.log
BITRATE=48000
SOURCE=source

El archivo de configuración es un poco más complicado que el archivo de configuración ices. Lo primero definir la IP y el puerto para su SERVIDOR Icecast. La opción SERVER es para el protocolo http o icy, aquí es http.MOUNT y PASSWORD son los mismos que la estación OGG / Vorbis, donde para llegar a la estación en sí (http://MyHost/IP:8000/radiostation2) y cómo autentificarse. La opción de formatear, ya sea streaming de MP3 (1) o OGG / Vorbis (0). LOOP y SHUFFLE para recorrer la lista de reproducción y plaing aleatorio. Nombre, descripción y GENRE describirá su radio.MP3PATH define qué archivos en secuencia, en este caso, todo ello desde una lista de reproducción m3u compatible (creado después). URL indica donde para llegar al servidor de streaming o cualquier otra dirección. Esta dirección se mostrará tal vez por su reproductor. LOG specifiy y logPath. El BITRATE define la calidad de streaming ..

 

# vi /usr/local/etc/playlist2.m3u

/music/artist/album/song1.mp3
/music/artist/album/song2.mp3

# find /music/artist/album/ -name "*.mp3" > /usr/local/etc/playlist2.m3u

# su - icecast -c "export LD_LIBRARY_PATH=/opt/icecast/latest/lib:$LD_LIBRARY_PATH; /usr/local/bin/icegenerator -f /usr/local/etc/icegen1.cfg"

# pgrep -fl icegen

31255 icegenerator -f /usr/local/etc/icegen1.cfg

# cat /var/log/icecast/icegen1.log

Fri Dec 16 13:44:38 2011: Connected to stream serverFri Dec 16 13:44:38 2011: Now playing song1.mp3Fri Dec 16 13:48:41 2011: Wait for all child process to terminate......

Como se puede ver la segunda estación de radio está listo y disponible bajo http://MyHost/IP:8000/radiostation2

Ahora intenta conectarse a su servidor de streaming con un cliente de audio y disfrutar escuchando su radio.


Enlaces:


Icecast, libshout and ices: http://www.icecast.org
Description for icegenerator: http://www.becrux.com/index.php?page=projects&name=icegenerator#Configuration


 

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política