jueves, 12 de junio de 2014

Cómo compartir la TDA por la red local usando Ubuntu

Usaremos la aplicación MuMuDVB  (Multi Multicast DVB) para hacer el streaming sobre la red. Es una aplicación de consola, que puede quedar corriendo como un servicio o demonio. Queremos hacer multicast por UDP en la red local, para usar el mínimo de recursos, y que puede soportar cualquier cantidad de clientes recibiendo el streaming.
Otra alternativa sería hacer unicast por HTTP, pero no lo veremos aquí.

1) bajar MuMuDVB

En Ubuntu 12.04 está la versión 1.6.x de MuMuDVB. Para esta guía, se usó la versión 1.7.2 (enlace directo), descargada directamente de su sitio oficial:  http://www.mumudvb.net/node/25

Para descomprimir el archivo, compilar e instalar el programa, seguimos estos comandos:
unzip MuMuDVB-1.7.2.zip
cd MuMuDVB-1.7.2
./configure make
sudo make install

Nota: puede ser necesario instalar antes las herramientas de compilación, si no se instalaron anteriormente:
sudo apt-get install build-essential

2) crear el archivo de configuración mumudvb.conf

freq=527
bandwidth=6MHz
autoconfiguration=full
El dato freq es muy importante. Indica en qué frecuencia de canales se va a sintonizar el receptor de TDA.
El bandwidth es el ancho de banda, que para Argentina es siempre 6 Mhz.
El parámetro autoconfiguration=full hace una configuración automática, agregando todos los canales que se encuentren disponibles en esa frecuencia.

3) configurar la direccion de multicast en la placa de red:

sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
Para habilitar el broadcast de paquetes UDP sobre la LAN conectada a dicha interfaz de red ethernet, en este caso la eth0.

4) arrancar el servidor MumuDVB:

mumudvb -d -c mumudvb.conf
Para ver información más detalla, se puede agregar el parámetro -v, por ejemplo:
mumudvb -v -d -c mumudvb.conf
El parámetro -d indica que no quede corriendo como servicio (don't demonize).
El parámetro -s muestra la fuerza de la señal, que puede ser muy útil.
El parámetro -h muestra una pequeña ayuda con información sobre otros parámetros.

5) Para reproducir el streaming desde las otras PCs:

Las otras PCs pueden tener Linux, Windows, o cualquier sistema operativo. El reproductor de video recomendado es VLC (VideoLan Client) (descargar aquí). Es recomendable usar la versión 2.0 en adelante.
Se debe una URL de la forma:
udp://@239.100.0.X:1234
donde 239.100.0.x es la IP de brodcast que informó MuMuDVB más arriba. En la configuración automática de MuMuDVB, el último número de la IP arranca en 0 (cero) para el primer canal, y continúa con 1, 2, ..., correspondientes a los siguientes canales, con tantos canales como se hayan detectado y configurado.

Ejemplos de cómo iniciar VLC o Mplayer (otro reproductor) desde la línea de comandos:
vlc udp://@239.100.0.0:1234
vlc udp://@239.100.0.1:1234 
mplayer udp://@239.100.0.0:1234

Notas:

Cada canal tendrá una IP distinta. Con un solo receptor, solo se podrán ver los canales que compartan la misma frecuencia, normalmente entre 2 y 4 canales. Para poder sintonizar más frecuencias, se necesitan más adaptadores USB, cada uno sintonizado en diferentes partes del espectro, y cada uno haciendo broadcast con IPs distintas.

Con la configuración automática de MuMuDVB, se agregan todos los canales de la frecuencia. Si solo queremos un canal, podemos hacer una configuración manual. Un ejemplo de configuración manual con 2 canales:
freq=527
bandwidth=6MHz

ip=239.100.0.0
port=1234
name=TV Publica HD
pids=258 289 290 291 288

ip=239.100.0.1
port=1234
name=TV Publica SD
pids=259 305 306 307 304

Y otro ejemplo de configuración manual con un solo canal:
freq=533
bandwidth=6MHz

ip=239.100.0.1
port=1234
name=DeporTV
pids=257 272 273 769
El número de frecuencia (freq) corresponde a los 3 primeros dígitos del archivo canales_tda.conf que usa VLC, que creamos en el artículo anterior.
Obtener los números de PIDs (Program IDs) puede ser algo complicado. La forma más fácil y directa es arrancar MuMuDVB en autoconfiguration=full, en la frecuencia deseada (freq), agregando el parámetro -v para obtener los PIDs de los canales deseados. Después copiamos esos PIDs y así podemos configurar a mano solo los canales deseados.
Pueden crearse varios archivos de configuración, uno por cada frecuencia y canales que se deseen transmitir, y luego reiniciar MuMuDVB con el archivo de configuración deseado en cada momento.


Alternativas:

Como alternativa a MuMuDVB, tenemos al fantástico TvHeadend. Se configura y se administra totalmente por web, y puede integrarse con XBMC (un completísimo centro multimedia) mediante un plugin. TvHeadend tiene muchas funcionalidades adicionales, como la posibilidad de cambiar de canales vía web, funciones de DVR para programar la grabación automática de nuestras series o programas favoritos, ver la guía de programación que emiten algunos canales, etc. Pero quedará para otro artículo, porque es muy extenso en si mismo :)

Fuentes:
Toda la documentación provista por estos programas y sus sitios web.
http://gcp.fcaglp.unlp.edu.ar/_media/integrantes:psantamaria:tdt:charla-jrsl2011.pdf

Actualización 19/06/14:

En el sitio de Fabio, hicieron una buena nota explicando otra alternativa para emitir TDA por streaming en LAN, pero usando solo VLC. Ambas opciones tienen sus ventajas y desventajas. Si conocen más alternativas, no dejen de comentarlo :)

No hay comentarios. :