Servidor de televisión TVHeadend
1. Introducción
Para aquellos que no conozcan ‘tvheadend’ esta es una aplicación disponible para GNU/Linux que nos hace de completo Servidor de Televisión. Con ella podemos sintonizar los canales de televisión provenientes de una tarjeta sintonizadora de Satelite, TDT o incluso IPTV. Por ejemplo, todas aquellas personas que disponen en su casa de Movistar Televisión pueden sintonizar todos los canales y retransmitirlos en su LAN ‘transcodificados’ a una menor tasa de bits o simplemente haciendo un ‘pass(through)’ teniendo en el cliente el canal en su calidad original.
Clientes para TVHeadend:
- Kodi
- Vlc
- TVHGuide
- Serviio
NOTA: Al final de la entrada está el script para capturar todas las IP’s de Movistar España.
Me hubiera gustado explicar un poquito como sintonizar canales con una tarjeta de televisión pero donde está mi servidor actualmente no tengo la posibildad de llevar un cable de antena para sintonizar TDT. De todas formas es sencillo porque la interfaz web es muy intuitiva.
2. Instalación de los repos Backports
En el punto 3.2 es necesario un paquete que se encuentra en Backports de Debian Jessie, así que hay que agregar ese repo a nuestro sistema.
Voy a crear un fichero independiente solo para el repo Backports de la siguiente manera:
root@tvlinuxarena:~# printf 'deb http://ftp.debian.org/debian jessie-backports main\n' > /etc/apt/sources.list.d/backports.list root@tvlinuxarena:~# apt update
root@tvheadend:~# apt-cache policy libavfilter-dev libavfilter-dev: Instalados: 7:3.2.2-1~bpo8+1 Candidato: 7:3.2.2-1~bpo8+1 Tabla de versión: *** 7:3.2.2-1~bpo8+1 0 100 http://ftp.debian.org/debian/ jessie-backports/main amd64 Packages 100 /var/lib/dpkg/status 6:11.8-1~deb8u1 0 500 http://security.debian.org/ jessie/updates/main amd64 Packages 6:11.7-1~deb8u1 0 500 http://ftp.es.debian.org/debian/ jessie/main amd64 Packages root@tvheadend:~#
3. Instalación de tvheadend
3.1. ArchLinux
En Archlinux, tvheadend, se encuentra en los repos, sin embargo, yo instalo la versión ‘tvheadend-git’ desde AUR porque está más actualizada y trae una serie de extensiones muy útiles si se posteriormente se pretende añadir soporte XML para tener un EPG actualizado el cual ‘tvheadend’ es capaz de retransmitir a sus clientes, como ‘KODI’, ‘VLC’, algunas apliaciones Android o desde la interfaz web que ‘tvheadend’ proporciona.
Yo no uso ‘yaourt’, uso ‘cower’, que lo único que hace es bajarse todos los PKBUILD’s necesarios y manualmente voy instalándolos, así parece que tengo más control sobre qué cosas instalo en Arch.
[manuel@pris ~]$ cd AUR/ [manuel@pris AUR]$ mkdir tvheadend [manuel@pris AUR]$ cd !$ cd tvheadend [manuel@pris tvheadend]$ cower -dd tvheadend-git :: tvheadend-git downloaded to /home/manuel/AUR/tvheadend warning: uriparser is available in community (ignore this with --ignorerepo=community) warning: linuxtv-dvb-apps is available in community (ignore this with --ignorerepo=community) [manuel@pris tvheadend]$ cd tvheadend-git/ [manuel@pris tvheadend-git]$ makepkg -sri
NOTA: los parámetros ‘sri’ que le paso a ‘makepkg’ son:
Instala las dependencias necesarias para la creación del paquete
Elimina las dependencias que se han instalado durante la creación y que ya no son requeridas por nadie
Instala el paquete recién creado
Más información: `man makepkg`
Con esto queda instalado tvheadend-git en nuestro servidor de TV en Archlinux.
3.2. Debian Jessie
Tened en cuenta que todo este proceso lo hago en una máquina recién instalada que no tiene absolutamente nada, es una instalación estándar de Jessie sin DE (Entorno de escritorio), así que os debe funcionar.
Lo primero es instalar las dependencias necesarias.
root@tvlinuxarena:~# apt install git build-essential python3 pkg-config gettext libssl-dev liburiparser-dev libavahi-client-dev dvb-apps cmake
También hace falta el paquete ‘libavfilter-dev‘ para compilar los módulos necesarios para la transcodificación. Voy a ver en qué repo de Debian se encuentra y cuál es la preferencia en la instalación.
root@tvheadend:~# apt-cache policy libavfilter-dev libavfilter-dev: Instalados: 7:3.2.2-1~bpo8+1 Candidato: 7:3.2.2-1~bpo8+1 Tabla de versión: *** 7:3.2.2-1~bpo8+1 0 100 http://ftp.debian.org/debian/ jessie-backports/main amd64 Packages 100 /var/lib/dpkg/status 6:11.8-1~deb8u1 0 500 http://security.debian.org/ jessie/updates/main amd64 Packages 6:11.7-1~deb8u1 0 500 http://ftp.es.debian.org/debian/ jessie/main amd64 Packages root@tvheadend:~#
Se puede ver que el candidato para la instalación es la versión ‘3.2.2.-1‘ de ‘Backports‘ luego es superfluo indicárselo al comando ‘apt‘ con el parámetro y su argumento ‘-t jessie-backports‘. De todas formas, por si vuestro sistema es distinto del mío lo dejaré.
root@tvlinuxarena:~# apt -t jessie-backports install libavfilter-dev
Clonamos el repo de tvheadend y lo compilamos:
root@tvlinuxarena:~# su – debian debian@tvlinuxarena:~$ git clone https://github.com/tvheadend/tvheadend.git debian@tvlinuxarena:~$ cd tvheadend debian@tvlinuxarena:~/tvheadend$ ./configure –-prefix=/usr \ --python=python3 \ --disable-nvenc \ --disable-hdhomerun_static debian@tvlinuxarena:~/tvheadend$ make debian@tvlinuxarena:~/tvheadend$ sudo make install
Con este último comando ha quedado instalado en nuestro sistema.
4. Configurar tvheadend
El primer inicio de tvheadend hay que hacerlo con este comando, si no, no podremos acceder a él:
debian@tvheadend:~$ tvheadend -C
Si la instalación ha sido correcta veremos una salida como esta:
Entramos en la web de administración donde podemos crear un usuario administrador y darle una contraseña.
La URL de administración es ‘http://ip-de-la-máquina:9981‘.
Si dispones de DNS se puede entrar usando el nombre.
Después de configurar el lenguaje, el asistente nos hace crear 2 usuarios, un administrador y un usuario sin privilegios. Luego podremos crear cuántos queramos.
En las siguientes ventanas que van apareciendo se pueden sintonizar los canales de TV…
Como en esa máquina no tengo acceso a la red en la que se encuentran los canales de IPTV, os enseñaré como queda en mi servidor de tvheadend que tengo en producción en casa.
Esta primera pantalla son los canales en sí, son 105 en total.
Una vez añadidos los Muxes hay que mapearlos en la pestaña ‘Servicios’:
Depués de mapearlos en la pestaña ‘Guía’ podemos verlos en ‘Ver TV’.
5. Configurando perfiles
Como lo hemos compilado con soporte de transcodificación podemos crearnos un perfil muy básico, por ejemplo, para verlo en el móvil sin gastar mucho ancho de banda, puesto que la pantalla del móvil es muy pequeña y no necesitamos mucha calidad en él.
Para ello nos vamos a: ‘Configuración -> Retransmisión’, pulsamos ‘Añadir’.
Primero lo ponemos en modo experto:
Elegimos el tipo, en este caso ‘Transcode’, y configuramos algo como esto:
6. Creando usuarios
Ahora creamos un usuario llamado ‘movil’ y le asignamos ese perfil de forma única y por defecto. Hay que obrar de la misma forma, poniendo previamente la ventana en modo Experto.
Le asignamos una contraseña en la pestaña contraseñas:
Si nos vamos a la pestaña Entradas de Acceso en modo ‘Experto’ podemos ver alguna información más.
Si queremos tener nuestra intrefaz en modo ‘Experto’ siempre lo podemos hacer aquí:
No olvidéis ‘Guardar’ antes de salir, eeeh 😀 .
7. Cliente Android
Yo uso un cliente en el móvil que se llama ‘TVHGuide’ en conjunción con ‘VLC for Android’, así que lo instaláis en vuestro móvil y podemos seguir.
Ahora solo hay que entrar en ‘TVHGuide’ y configurarlo con los siguientes valores:
Hostname: ip_de_la_máquina_tvheadend Port: 9982 Username: movil Password: linuxarean4321 HTTP port: 9981 Media container: MKV Prefer external player: Activado
Si lo hemos configurado todo correctamente podemos reproducir cualquier canal manteniendo pulsado unos instantes en el nombre del canal.
8. VLC como cliente
Otra opción es instalar VLC en nuestro SO compilando el módudo ‘libhtsp_plugin.so‘ de este repositorio de github y colocándolo en la carpeta ‘/usr/lib/vlc/plugins/access‘ (yo lo he compilado en Archlinux y no he tenido problemas).
Y este es el resultado:
9. KODI como cliente
También podemos usar KODI para ver la televisión en nuestra RaspberryPI, Windows o GNU/Linux.
Para ello hay que instalar el add-on ‘kodi-pvr-hts‘ desde este repositorio de github, en Archlinux existe un paquete AUR que se llama ‘kodi-addon-pvr-hts‘.
Un vez instalado iniciamos KODI, nos vamos a ‘Sistema -> Add-ons -> Mis add-ons -> Clientes PVR‘ configuramos y habilitamos ‘Tvheadend HTSP Client‘.
El último paso de configuración es activar la TV en KODI, para ello nos vamos a ‘Sistema -> TV‘ y en la pestaña ‘General‘ activamos la TV.
Hecho todo esto tendremos una nueva categoría en el menú prinicipal de KODI en el que podemos acceder a nuestro servidor TVHeadend.
- KODI 1
- KODI 2
- KODI 3
- KODI 4
10. Servicio para systemd
Si haces la instalación compilada en Debian este programa no tiene un servicio que lo active al iniciar tu máquina. Aquí os dejo un ‘servicio‘ de systemd que he hecho para tvheadend.
[Unit] Description=Tvheadend - Servidor Streaming y PVR de TV After=network.target [Service] ExecStart=/usr/local/bin/tvheadend -f -u debian -g debian -p /var/run/tvheadend.pid PIDFile=/var/run/tvheadend.pid Type=forking Restart=on-failure RestartSec=54s [Install] WantedBy=multi-user.target
Para su correcto funcionamiento:
- Cambia el usuario y el grupo que está en negrita, ‘debian‘, por el usuario y el grupo con el que hiciste el primer lanzamiento, ‘tvheadend -C‘, de la aplicación.
- Guarda ese fichero como ‘/etc/system/systemd/tvheadend.service‘
- Recarga los servicios con el comando ejecutado como root: ‘# systemctl daemon-reload‘
- Para activarlo al iniciar el sistema operativo: ‘# systemctl enable tvheadend.service‘
- Para ejecutarlo: ‘# systemctl start tvheadend.service‘
Si lo que quieres es activarlo al iniciar y ejecutarlo ahora mismo sin tener que reiniciar, ejecuta los comandos de las 2 últimas líneas.
Si tienes la versión 232 de systemd se puede hacer en una sola linea añadiendo ‘–now‘ al final:
[root@servidor ~]# systemctl enable tvheadend.service --now
11. Script para obtener la lista de Canales de Movistar
No recuerdo de dónde lo saqué pero aquí está el script para obtener la lista de direcciones ‘rtp‘ de Movistar en España:
Aquí tenéis el script canales_vomistar.
Comentarios recientes