miércoles, 13 de marzo de 2013

Servicios de streaming de audio y vídeo



En este manual vamos a aprender como se inicia y configura un servidor de straming llamado icecast que es un servicio libre que hace competencia al conocido servicio de ShoutCast.
Primero vamos a proceder a instalarlo:
apt-get install icecast2 ices2




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


Instalado iremos a configurar el archivo de configuracion de nuestro servidor icecast (/etc/icecast2/icecast.xml)
Recomiendo que se cambien las contraseñas que la instalación trae por defecto, (<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/

Configuración de Icecast2:



Ejemplo de configuración del archivo 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>source</source-password>
        <relay-password>source</relay-password>
        <admin-user>admin</admin-user>
        <admin-password>admin</admin-password>
    </authentication>
    <hostname>localhost</hostname>
    <listen-socket>
        <port>8000</port>
    </listen-socket>
    <fileserve>1</fileserve>
    <paths>
        <basedir>/usr/share/icecast2</basedir>
        <logdir>/var/log/icecast2</logdir>
        <webroot>/usr/share/icecast2/web</webroot>
        <adminroot>/usr/share/icecast2/admin</adminroot>
        <alias source="/" dest="/status.xsl"/>
    </paths>
    <logging>
        <accesslog>access.log</accesslog>
        <errorlog>error.log</errorlog>
                <loglevel>3</loglevel>
                <logsize>10000</logsize>
    </logging>
    <security>
        <chroot>0</chroot>
        <!--
        <changeowner>
            <user>nobody</user>
            <group>nogroup</group>
        </changeowner>
        -->
    </security>
</icecast>


Ahora editamos  /etc/default/icecast2 y debería de estar de esta  forma:


Para resumir, deberían estar definidas las variables de este modo.

CONFIGFILE="/etc/icecast2/icecast.xml"
USERID=icecast2

GROUPID=icecast

ENABLE=true
Configurado todo lo anterior procedemos a iniciar el servicio


/etc/init.d/icecast2 start

O

service icecast2 start


Si todo ha ido bien la siguiente dirección debería cargar correctamente en el navegador: http://127.0.0.1:8000





Parce que vamos bien a ver qué pasa.


Configuración de Ices2



Modo Live: Para Emitir streaming en línea, (con un micro por ejemplo)


Los ficheros de configuración de ices2 se pueden crear donde uno quiera, pero, para este manual lo haremos en nuestro directorio de root (podríamos crearla en nuestro directorio personal /home/usuario).

Creamos el directorio


mkdir /root/radio/iceconf

Creamos el archivo de configuración:


nano root/radio/iceconf/ices2 live.xml


El contenido del archivo será el siguiente:

<?xml version='1.0'?>
<ices>
<background>0</background>
<logpath>/var/log/icecast2</logpath>
<logfile>ices.log</logfile>
<loglevel>4</loglevel>
<consolelog>1</consolelog>
<stream>
<metadata>
<name>Nombre de la radio</name>
<genre>Genero de nuestra musica</genre>
<description>Breve descripcion </description>
<url>Nuestra página web </url>
</metadata>
<input>
<module>alsa</module>
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="device">hw:0,0</param>
<param name="metadata">1</param>
<!--Localización de un fichero metadata.-->
<param name="metadatafilename">./metadata</param>
</input>
<!--Datos del Servidor Icecast2-->
<instance>
<hostname>127.0.0.1</hostname>
<port>8000</port>
<username>source</username>
<password>source</password>
<mount>/nuestraradio.ogg</mount>
<yp>1</yp>
<encode>
<!--Datos de la velocidad de transmisión, calidad-->
<minimum-bitrate>48000</minimum-bitrate>
<maximum-bitrate>64000</maximum-bitrate>
<nominal-bitrate>64000</nominal-bitrate>
<samplerate>44100</samplerate>
<!--Calidad de codificación del bitrate. Va de 0 a
10. Interesa tener un valor bajo para conexiones
modestas-->
<quality>1</quality>
<!--Número de canales de la entrada -->
<channels>2</channels>
</encode>
<downmix>1</downmix>
<resample>
<in-rate>44100</in-rate>
<out-rate>44100</out-rate>
</resample>
</instance>
</stream>
</ices>

Para emitir sólo abra que lanzar este comando:

ices2 ices2 live.xml

Para ver si estamos retrasmitiendo correctamente nos iremos a la siguiente url: localhost:8000/radiobyte.ogg (esto último será el nombre que tú le has dado a tu radio)

Y deberá de salir algo como esto.


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

nano /root/radio/iceconf/ices2 playlist.xml

Copiamos y editamos este código que es parecido pero no igual que el anterior modo.



<?xml version='1.0'?>
<ices>
<background>0</background>
<logpath>/var/log/icecast2</logpath>
<logfile>ices.log</logfile>
<loglevel>4</loglevel>
<consolelog>1</consolelog>
<stream>
<metadata>
<name>Nombre de la radio</name>
<genre>Genero de musica </genre>
<description>Descripcion </description>
<url>Nuestra web </url>
</metadata>
<!-- El <input> es lo único diferente al fichero ices2-live.xml -->
<input>
<module>playlist</module>
<!--Indicar el sitio donde tenemos la lista de reproducción-->
<param name="file">/root/radio/iceconf / playlist.m3u</param>
<param name="type">basic</param>
<!--reproduce en modo random-->
<param name="random">1</param>
<!--A valor 0 reproduce la lista
continuamente."-->
<param name="once">0</param>
<param name="rate">44100</param>
<param name="channels">2</param>
<param name="device">/dev/dsp</param>

</input>

<instance>
<hostname>127.0.0.1</hostname>
<port>8000</port>
<username>source</username>
<password>source</password>
<mount>/nuestraradio.ogg</mount>
<yp>1</yp>

<encode>
<!--Datos de la velocidad de transmisión-->
<minimum-bitrate>48000</minimum-bitrate>
<maximum-bitrate>64000</maximum-bitrate>
<nominal-bitrate>64000</nominal-bitrate>
<samplerate>44100</samplerate>
<!--Calidad de codificación-->
<quality>1</quality>
<!--Número de canales de la entrada -->
<channels>2</channels>
</encode>
<downmix>1</downmix>

<resample>
<in-rate>44100</in-rate>
<out-rate>44100</out-rate>
</resample>
</instance>
</stream> </ices>


Crear la lista de reproducción:

La lista de reproducción es una lista con la ruta de los archivos de audio, en este caso deben de ser OGG ya que icecast solo admite este tipo de formato de audio, el fichero debe constar de una dirección por línea. Podríamos generar el fichero.m3u automáticamente con algo como:

find /home/usuario/musica/*.ogg" > /root/radio/iceconf /playlist.m3u --> Por ejemplo

Y se crearía un fichero como este que muestro:



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

ices2 ices2 playlist.xml
Y para comprobar que estamos retrasmitiendo igual que con el modo anterior. Nos vamos a localhost:8000/radiobyte.ogg (esto último será el nombre que tú le has dado a tu radio)

Y deberá de salir algo como esto.



Para terminar, una vez iniciemos la retrasmisión de ninguna forma nos devolvernos al promt del terminal, si esto ocurriera es porque los ficheros están mal configurados o el servidor no está iniciado correctamente. Si todo fue bien tendríamos nuestro servidor de Icecast básicamente configurado y listo para empezar a emitir perfectamente.

Implementación de una emisora icecast externa a nuestro servidor.


Es fácil de conseguir lo único que deberá hacer el administrador de la otra emisora será cambiar en playlist.xml lo siguiente:

<instance>
<hostname>127.0.0.1</hostname> --> Ip del servidor icecast
<port>8000</port> --> Puerto del servidor
<username>source</username> --> Usuario establecido
<password>source</password> --> Contraseña
<mount>/nuestraradio.ogg</mount>
<yp>1</yp>
<encode>
<!--Datos de la velocidad de transmisión-->
<minimum-bitrate>48000</minimum-bitrate>
<maximum-bitrate>64000</maximum-bitrate>
<nominal-bitrate>64000</nominal-bitrate>
<samplerate>44100</samplerate>
<!--Calidad de codificación-->
<quality>1</quality>
<!--Número de canales de la entrada -->
<channels>2</channels>
</encode>
<downmix>1</downmix>
<resample>
<in-rate>44100</in-rate>
<out-rate>44100</out-rate>
</resample>
</instance>
Y cuando vayamos a la dirección de antes para ver las radios:


Como retrasmitir contenido multimedia con VideoLAN



Instalación de VideoLAN

sudo apt-get install vlc

Retrasmisión de audio y video


Primero procederemos a emitir una pista de audio y después de vídeo ya que son semejantes solo cambia a la hora de seleccionar el archivo a emitir.

Esto gracias a nuestro reproductor VLC es muy fácil de conseguir.
Primero y como es lógico abriremos el reproductor.


Paso 1:



Paso 2:



Paso 3:



Paso 4:




Cuando le damos a añadir nos saldrá una serie de configuraciones que debemos definir deberemos dejarlo como muestro:


Paso 5:


Conectarse a una retrasmisión de streaming con VLC


¡Bien, ya estamos retransmitiendo!
¿Qué tal si accedemos con nuestro cliente y comprobamos que estamos emitiendo?
Venga ya que estamos vamos al lio.


Y listo ya estaremos escuchando/viendo lo retransmitido.




0 comentarios :

Publicar un comentario