miércoles, julio 08, 2009

FreeBSD + Icecast2 + Theora

STREAMING SERVER

Requerimientos:
FreeBSD instalado

Guias:

http://www.icecast.org/docs.php
http://www.oddsock.org/guides/video.php
http://www.acooke.org/cute/SettingupR0.html

Instalacion:

1) Instalar icecast2
# whereis icecast2
icecast2: /usr/ports/audio/icecast2
# cd /usr/ports/audio/icecast2
# make install clean

2) Instalar ffmpeg2theora
# whereis ffmpeg2theora
ffmpeg2theora: /usr/ports/multimedia/ffmpeg2theora
# cd /usr/ports/multimedia/ffmpeg2theora
# make install clean

3) Instalar ezstream
# whereis ezstream
ezstream: /usr/ports/audio/ezstream
# cd /usr/ports/audio/ezstream
# make install clean

Archivos de configuracion:

# cp /usr/local/etc/icecast.xml.sample /usr/local/etc/icecast.xml

Crear una carpeta que tendra los videos
# mkdir /usr/home/hd3/streaming/

Crear el archivo con el listado de los videos y su orden
/usr/home/hd3/streaming/playlist.m3u
en este archivo podemos poner los videos por ejemplo:
# cat playlist.m3u
/usr/home/hd3/streaming/telesursoflibre.mpg

Copiar el archivo de
# cp /usr/local/share/examples/ezstream/ezstream_reencode_theora.xml /usr/local/etc/

# mkdir /var/log/icecast
# touch /var/log/icecast/access.log
# touch /var/log/icecast/error.log
# chmod -R 777 /var/log/icecast/

Iniciar el streaming

$ /usr/local/bin/icecast -c /usr/local/etc/icecast.xml >/dev/null 2>&1 &

$ /usr/local/bin/ezstream -c /usr/local/etc/ezstream_reencode_theora.xml >/dev/null 2>&1 &

Pararlo

killall ffmpeg2theora
killall ezstream
killall icecast

Probar que envia

http://192.168.1.1:8000/theora.ogg

Ajustar la resolucion para el streaming

En el archivo /usr/local/etc/ezstream_reencode_theora.xml
hay 2 lineas que tienen estos valores:
ffmpeg2theora -x 192 -y 128 -a 0 -v 4 --title "@M@" -o - "@T@"
se cambian para que queden asi:
ffmpeg2theora -x 384 -y 256 -a 0 -v 4 --title "@M@" -o - "@T@"

Aqui los archivos de configuracion

Nota:
Como los archivos son en un formato XML, el navegador muestra mal el contenido, de click derecho sobre los links y luego Save link as...
Guardelos en su disco y luego los abre con un editor.
icecast.xml

ezstream_reencode_theora.xml

Para hacer relay de alguna emisora, por ejemplo de www.di.fm

Trance Channel - D I G I T A L L Y - I M P O R T E D
en el archivo http://www.di.fm/mp3/trance.pls

vemos esta linea para conectar
http://scfire-ntc-aa06.stream.aol.com:80/stream/1003

entonces en el archivo de Icecast2 ponemos esto:

<relay>
<server>scfire-ntc-aa06.stream.aol.com</server>
<port>80</port>
<mount>/stream/1003</mount>
<local-mount>/different2.ogg</local-mount>
<on-demand>0</on-demand>

<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
</relay>

Y listo, para escuchar, usamos esta direccion:
http://192.168.1.1:8000/different2.ogg.m3u

Nota 2:

El archivo ezstream_reencode_theora.xml es en caso de querer usar archivos en formatos .mpg , si podemos usar directamente archivos de video en formato .ogv debemos usar el archivo ezstream_vorbis.xml con lo que nos ahorraremos procesador ya que no se requiere hacer el reencode, para esto:

# cp /usr/local/share/examples/ezstream_vorbis.xml /usr/local/etc/

Nota:
En este caso el ezstream se debe iniciar con el archivo .xml correcto, en este caso seria:

$ /usr/local/bin/ezstream -c /usr/local/etc/ezstream_vorbis.xml >/dev/null 2>&1 &

Crear el archivo con el listado de los videos .ogv y su orden
/usr/home/hd3/streaming/playlist.m3u
en este archivo podemos poner los videos en formato .ogv por ejemplo:
# cat playlist.m3u
/usr/home/hd3/streaming/otrovideo.ogv

Para verificar que funciona, abrimos en VLC, esta direccion:
http://192.168.1.1:8000/http://alpha:8000/vorbis.ogg.m3u

Nota 3:
Para hacer que el servicio se inicie con el servidor, se debe:
Agregar las lineas en /etc/rc.conf

icecast_enable="YES"
icecast_config="/usr/local/etc/icecast.xml"

Editar el archivo /usr/local/etc/icecast.xml y modificar la linea

<security>
<chroot>0</chroot>
<!--
<changeowner>
<user>nobody</user>
<group>nobody</group>
</changeowner>
-->
</security>

Por

<security>
<chroot>0</chroot>
<!-- -->
<changeowner>
<user>angel</user>
<group>nobody</group>
</changeowner>
<!-- -->
</security>

Donde angel es un usuario creado en el servidor

No hay comentarios.: