Un interesantísimo proyecto para nuestra Raspberry pasa por convertir esta en un servidor de streaming, con lo que conseguiremos tener acceso dentro de nuestra red doméstica a contenido audio/visual «emitido» desde la Raspi.
En este ejemplo vamos a utilizar un receptor TDT-USB (tembién conocido como DVB-T) conectado y configurado en nuestra tarjeta Raspberry Pi así como un programa (TVHeadend) que efectúe el servicio de streaming.
Una vez puesto en marcha podremos sintonizar un canal de TV o radio (vía interfaz Web) y disfrutar del mismo (usando un cliente PVR TvHeadend, claro está) en cualquier dispositivo de nuestra casa, siempre que este esté conectado a la misma red que la Raspi.
Podremos ver la TV desde nuestra tableta, oir musica desde el PC (bien sea en Windows, Mac, etc), etc, etc
El proceso que comentaremos, algo complejillo, puede resumirse en estos pasos:
– Proceso de instalación de requisitos previos –
– Proceso de instalación del driver DVB-TDT –
– Proceso de instalación del servidor TVHeadend –
– Proceso de configuración del servidor TVHeadend –
– Proceso de configuración del cliente TVHeadend –
¡Vamos alla! …
– Proceso de instalación de requisitos previos –
Antes de nada será preciso efectuar el consabido comando de actualización de fuentes de repositorio
sudo apt-get update
e incluso, (opcionalmente) para poner al día nuestra Raspi, actualizar paquetes con
sudo apt-get upgrade
(esto puede tomarse un tiempo)
Ahora instalamos algunos paquetes previos y que se necesitarán posteriormente con
sudo aptitude install build-essential git pkg-config libssl-dev bzip2 wget
y opcionalmente
sudo aptitude install libavahi-client-dev zlib1g-dev dvb-apps
– Proceso de instalación del driver DVB-TDT –
Algunos consejos previos sobre el hardware
Para estar seguros de que nuestro receptor DVB-TDT sea reconocido por Raspberry no estaría de más darnos una vuelta por la página
http://elinux.org/RPi_VerifiedPeripherals#USB_TV_Tuners_and_DVB_devices
e incluso dar también antes un vistazo a
http://linuxtv.org/wiki/index.php/DVB-T_USB_Devices
no obstante, comentaremos luego sobre posibles «opciones en Internet» a la detección de hardware, así como la existencia de algún TDT tipo USB comprobado y verificado por DIVERTEKA
Para obtener el driver de nuestro dispositivo – en nuestro caso hemos usado el DVB-TDT suministrado por la firma Webtronika – verificamos el tipo de hardware que implementa. Para ello:
conecto el TDT-USB a la Raspberry Pi y ejecuto
dmesg | grep dvb-usb
en este caso se nos mostrará que el nuevo hardware ha sido detectado (ITE 9135 Generic) pero no se han podido cargar los drivers
Es ahora donde debemos «bucear» en Internet y localizar (si existe uno compatible) el driver de nuestro receptor DVB-USB. En nuestro modelo basta con efectuar el proceso siguiente
Nota: los drivers para el modelo DVB-TDT de Webtronika se pueden descargar al final de este artículo. Además – durante el tiempo de oferta – el modelo DVB-T disponible en Webtronika ofrece la tarjeta SD «Server-Ready» de regalo, la cual ya lleva pre-instalados tanto los drivers (ITE 9135) como el servidor Tvheadend descrito en esta entrada.
nos situamos en la carpeta de nuestra elección y hacemos
wget http://www.ite.com.tw/uploads/firmware/v3.6.0.0/dvb-usb-it9135.zip
unzip dvb-usb-it9135.zip
dd if=dvb-usb-it9135.fw ibs=1 skip=64 count=8128 of=dvb-usb-it9135-01.fw
dd if=dvb-usb-it9135.fw ibs=1 skip=12866 count=5817 of=dvb-usb-it9135-02.fw
sudo cp dvb-usb-it9135-0* /lib/firmware/
Una vez obtengamos los drivers correctos (o los descarguemos) tan solo hemos de colocarlos en la carpeta /lib/firmware.
Una vez instalados (copiados) los ficheros reiniciamos la Raspberry y ejecutamos de nuevo
dmesg | grep dvb-usb
comprobando que ahora ya se ha detectado correctamente el hardware
Ahora bien, si tenemos un DVB-TDT no muy conocido, algunas opciones en Internet para localizar un driver pasan por los dos consejos siguientes, con lo que se nos instalarán algunos drivers adicionales en /lib/firmware , y cabe la posibilidad de que el nuestro esté incluido entre ellos :
– Podemos efectuar desde el terminal el comando
sudo apt-get install firmware-linux-nonfree
– Podemos – según información vista en http://forum.stmlabs.com/showthread.php?tid=2648 – efectuar desde el terminal
cd /lib/firmware
sudo wget goo.gl/xZSPH -O dvb_firmware.tar.gz
sudo tar -xzf dvb_firmware.tar.gz
– Proceso de instalación del servidor TVHeadend –
Para instalar el paquete TVHeadend seguiremos estos pasos.
Nos situamos en nuestra carpeta de elección (p.ej. la del usuario)
cd ~
descargamos (clonamos) con
git clone https://github.com/tvheadend/tvheadend
compilamos con
cd tvheadend
./configure
nota: este paso puede informarnos de algún error,
no es problema, seguimos …
efectuo
make
esto se toma un buen tiempo … ¡¡ paciencia !!
ahora efectuamos
sudo make install
(este paso coloca el ejecutable en /usr/local/bin/tvheadend)
creamos ahora usuario y grupo para tvheadend
sudo groupadd tvheadend
sudo useradd -g tvheadend -G video -m tvheadend
creamos un fichero (tvheadend) de control del programa en /etc/init.d/ mediante
sudo nano /etc/init.d/tvheadend
el código del mismo es el mostrado a continuación, pero podemos tambien podemos descargarlo al final de este artículo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#!/bin/bash # ### BEGIN INIT INFO # Provides: tvheadend # Required-Start: $local_fs $network # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: tvheadend # Description: tvheadend daemon ### END INIT INFO TVHNAME="tvheadend" TVHBIN="/usr/local/bin/tvheadend" TVHUSER="tvheadend" TVHGROUP="tvheadend" case "$1" in start) echo "Arrancando tvheadend" start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \ -u ${TVHUSER} -g ${TVHGROUP} -f -C ;; stop) echo "Parando tvheadend" start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2 ;; restart) echo "Reiniciando tvheadend" start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2 start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \ -u ${TVHUSER} -g ${TVHGROUP} -f -C ;; *) echo "Modo de uso: tvheadend {start|stop|restart}" exit 1 esac exit 0 |
ahora damos los permiso de ejecución al fichero creado
sudo chmod 755 /etc/init.d/tvheadend
y habilito el arranque del servicio al iniciar
sudo update-rc.d tvheadend defaults
por último, reiniciamos con
sudo /etc/init.d/tvheadend restart
y luego, ya creado el usuario e iniciado otra vez el servicio :
IMPORTANTE : debemos dar permisos totales a /home/tvheadend/.hts/tvheadend
sudo chmod 777 /home/tvheadend/.hts/tvheadend
Gracias al fichero creado podemos parar y arrancar el sercicio a nuestra discreción
Ahora ya podemos configurar nuestro servidor de streaming.
– Proceso de configuración del servidor TVHeadend –
para ajustar (sintonizar) los canales en el receptor TDT-USB hemos de hacerlo vía Web, para ello accedemos a la interfaz TVHeadend desde un navegador de nuestra red con
http://xxx.xxx.xxx.xxx:9981/extjs.html
(siendo xxx.xxx.xxx.xxx la IP de la Raspberry)
en el entorno que nos aparece podemos efectuar el proceso siguiente
Accedo a Configuration / General y
selecciono idioma español + Save Configuration
Accedo a Configuration / DVB Inputs / TV Adapters y
en el cuadro desplegable elijo mi receptor TDT
Pulso en «Add DVB Network by location» y selecciono Generic / auto_Default , luego pulso el boton «Add DVB Network«
IMPORTANTE : me aseguro de chequear la casilla «Enabled» y por fin pulso «Save«
y ahora a esperar un buen rato …
Nota: también podemos abreviar algo el proceso seleccionando el pais/provincia de nuestra elección en vez de Generic/auto_Default
podemos ver que el proceso va OK observando la lista de Muxes pendientes de escaneo … debe ir disminuyendo hasta el final de la sintonización..
¡¡ paciencia !!
Una vez acabado el proceso tendremos activado el botón «Map DVB services to channels«, pulsamos sobre el mismo y los diferentes canales serán asignados.
Si nos ponemos en la pestaña «Channel/EPG» podremos verlos
– Proceso de configuración del cliente TVHeadend –
Bueno, en este paso es dónde cada uno tirará hacia donde más le convenga. La opción más rápida y vistosa es configurar el programa XBMC en nuestro dispositivo de elección (PC Windows, PC Mac. Tableta Android «moderna», etc). Conviene recordar que para «recibir» la emisión desde la Raspberry deberemos estar en la misma red que ella.
A modo de ejemplo vamos a comentar el uso del programa en un ordenador Mac.
Descargamos e instalamos el programa del modo habitual.
Vemos que el programa nos permite reproducir audio, video, etc. pero vamos a centrarnos en la opción LiveTV.
Antes de poder disfrutar del contenido «emitido» por la red debemos configurar el add-on de XBMC para PVR específico para TVHeadend. Para ello – en XBMC – configuramos en Add-ons/PVR Clients el Tvheadend
la configuración específica (no hay que olvidar utilizar la IP de nuestra Raspi) añade algunos parametros más
Finalmente, reiniciamos XBMC para más seguridad, y al reiniciar este recibirá ya los canales vía streaming.
Otras opciones :
podemos reproducir el streaming también – por ejemplo – con el conocido VLC. Tan solo hemos de tener claro el número que asigna TVHeadend a nuestro canal preferido (podemos husmear en el directorio del mismo) y, en VLC, efectuar algo como esto:
http://xxx.xxx.xxx.xxx:9981/stream/channelid/37
(siendo xxx.xxx.xxx.xxx la IP de la Raspberry)
Ahora … a DISFRUTAR
Descarga de Ficheros
Tvheadend script