Streaming en Raspberry Pi

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.

TVHeadend_03

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

TVHeadend_04

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.

TVHeadend_05

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

TVHeadend_06

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,

TVHeadend_07

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

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

TVHeadend_08

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)

TVHeadend_09

en el entorno que nos aparece podemos efectuar el proceso siguiente

Accedo a Configuration / General  y

selecciono idioma español + Save Configuration

TVHeadend_10

Accedo a Configuration / DVB Inputs / TV Adapters y

en el cuadro desplegable elijo mi receptor TDT

TVHeadend_11

Pulso en «Add DVB Network by location» y selecciono Generic / auto_Default , luego pulso el boton «Add DVB Network«

TVHeadend_12

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

TVHeadend_13

– 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

TVHeadend_14

la configuración específica (no hay que olvidar utilizar la IP de nuestra Raspi) añade algunos parametros más

TVHeadend_15

Finalmente, reiniciamos XBMC para más seguridad, y al reiniciar este recibirá ya los canales vía streaming.

TVHeadend_16

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

driver it9135

Tvheadend script
  Bitcoin Currency Converter
Amount of BTC to convert
To currency:
1BTC =