Streaming en Raspberry Pi 11

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

[wpdm_file id=10 title=”true” desc=”true” ]

[wpdm_file id=9 title=”true” desc=”true” ]

 

11 thoughts on “Streaming en Raspberry Pi

  1. Reply Santi Nov 10, 2013 8:59 am

    Todo bien hasta un error al compilar tvheadend

    from src/iptv_input.c:45:
    /usr/include/linux/sysinfo.h:8:2: error: unknown type name ‘__kernel_long_t’
    /usr/include/linux/sysinfo.h:9:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:10:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:11:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:12:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:13:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:14:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:15:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:18:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:19:2: error: unknown type name ‘__kernel_ulong_t’
    /usr/include/linux/sysinfo.h:21:22: error: ‘__kernel_ulong_t’ undeclared here (not in a function )
    make: *** [/home/pi/descargas/tvheadend/build.linux/src/iptv_input.o] Error 1

  2. Reply samot848 Dic 24, 2013 5:05 pm

    Buenas tardes.

    En primer lugar, gracias por el tutorial. Es muy completo y muy detallado. ¡¡ Enhorabuena por el esfuerzo!!
    Mi duda al realizar la instalación viene cuando introduzco el comando
    sudo nano /etc/init.d/tvheadend. En ese momento aparece una pantalla con una serie de opciones en la parte inferior.

    ¿Debo pegar dentro de esa pantalla el código y viene acontinuación?
    Después de pegarlo, ¿Qué debo pulsar para salir de esa pantalla?

    Un saludo y gracias

  3. Reply kloni Feb 11, 2014 10:47 pm

    Hola

    Tengo la misma sintonizadora y sigo todos los pasos bien sin problema pero al scanear con tvheadend se me queda colgado todo el raspi y tengo que reiniciarlo. ¿sabeis que puede ser?

    Muchas gracias

    • Reply Txus Feb 12, 2014 8:49 am

      Hola,

      si has seguido los pasos exactamente, lo único que se me ocurre es que tengas algo “escasa” la alimentación de la Raspi. ¿Has probado a repetir el proceso con una alimentación de más amperaje.?

      Un saludo

      Txus

  4. Reply kloni Feb 12, 2014 8:10 pm

    ¿Cuanto es el amperaje maximo que admite sin quemarse?

    Ahora tiene 1A. Esta conectado por el microUSB a la corriente.

    Gracias.

    • Reply Txus Feb 13, 2014 6:44 pm

      Debería ir bien con 1 A., a menos que tengas algún otro dispositivo USB conectado.
      No hay problema en poner un alimentador de más amperaje (p.ej. 1.5 A) ya que la tarjeta “pide” la intensidad que precise, es el voltaje el que no debe superar los 5 V.

      Un saludo

      Txus

      • Reply kloni Feb 13, 2014 6:50 pm

        Gracias por tu ayuda.

        El único dispositivo que tengo conectado por USB es el HDTV. El mismo que aparece en tu foto. ¿A tí te funciona con 1A en el microUSB y ese HDTV directamente conectado por USB? ¿Tal vez sea porque aunque el adaptador AC de 1A el microUSB este cogiendo 0,5A? ¿O por alguna limitacion del cable USB desde el adaptador al conector microUSB? No se..

        Gracias de nuevo

  5. Reply DanyStark Abr 6, 2014 4:00 pm

    Hola, en primer lugar darte la enhorabuena por este tutorial tan bueno y detallado. Te comento mi caso, estoy probando con una raspberry y un deco usb de hauppage, en concreto el HVR-900H. Estoy intentando convertirla en un mediahome con el RASPBMC, todo en uno.

    El caso es que sigo todos los pasos y parece que el fw que le instalo funciona, ya que escanea los canales y con el comando dmesg da a entender que está todo bien configurado. Pero a la hora de pinchar en los canales en el XBMC no hace nada… se puede leer “bufering” en la parte de arriba pero no está haciendo nada. Aparece una alerta abajo del tvheadend que dice “no input detectec”, pero el usb tiene las luces encendidas como si estuviera funcionando.

    ¿alquien tiene el mismo problema?

  6. Reply Espirou Sep 19, 2014 2:05 pm

    Hola.

    Estoy buscando un receptor de TV para la raspberry pi, y me surgen algunas dudas:

    – Donde podría comprar el receptor usb al que hacéis referencia en este articulo, la pagina de webtronika ya no existe y no encuentro referencia al modelo.

    – Sería posible ver también los canales de la tv por satélite?

    Muchas gracias.

  7. Reply usuariox Jun 11, 2015 8:26 pm

    Hola! lo primero muchas gracias por el tutorial, esta muy bien explicado.

    He segido todo al pie de la letra y todo fenomenal, menos el arranque automático al encender la raspberry. Y es que me dio el siguiente error cuando meti el comando para que arrancase automaticamente. Que puede ser?

    pi@raspberrypi /etc/init.d $ sudo update-rc.d tvheadend defaults
    update-rc.d: using dependency based boot sequencing
    update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match tvheadend Default-Start values (     2 3 4 5)
    update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match tvheadend Default-Stop values (     0 1 6)
    insserv: Script tvheadend is broken: incomplete LSB comment.
    insserv: missing valid name for `Provides:’ please add.

Leave a Reply

  

  

  

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