Remplacer sa box – Tvheadend : la télévision sur le réseau – Babash
Toujours pour mon projet de remplacement de box, je vais vous présenter ici comment partager la TNT sur le réseau local.
Pour cela, nous allons utiliser Tvheadend. Il permet, en terme un peu plus technique, de capter le signal TNT, de le diffuser sur le réseau local via le protocole HTSP (Home TV Streaming Protocol), de consulter la grille des programme via l’EPG (Electronic Program Guide) et d’enregistrer les émissions.
Couplé ensuite à XBMC, vous aurez donc un mediacenter complet !
Installation de votre tuner TNT
Avant d’installer tvheadend, commencez par installer votre tuner TNT. Je vous recommande de jeter un oeil sur le site LinuxTV pour savoir comment configurer votre tuner TNT.
Vous trouverez sur le lien suivant comment installer la clé TNT USB Avermedia Volar.
Installation de Tvheadend
Sous Debian
L’installation est assez simple :
Installer les librairies nécessaires :
apt-get install build-essential git pkg-config libssl-dev bzip2 wget libavahi-client-dev libcurl4-gnutls-dev libavcodec-dev libswscale-dev libavfilter-dev libavformat-dev libavcodec-extra-53
Pour information : Sous Ubuntu, j’ai eu aussi besoin du paquet : « debhelper ».
Téléchargement de la dernière version de tvheadend :
git clone https://github.com/tvheadend/tvheadend.git
cd tvheadend
Si vous êtes sous un OS 64 bits :
./Autobuild.sh -t precise-amd64
Sinon :
./Autobuild.sh -t precise-i386
Tvheadend a donc été compilé pour votre architecture. Il faut à présent l’installer :
cd .. dpkg -i tvheadend_3.5.23~g4724e01~precise_amd64.deb
Adaptez évidemment le numéro de version à votre fichier.
Il faut savoir que tvheadend s’exécute via l’utilisateur « hts ». Vous devez donc ajouter « hts » au groupe « vidéo » pour qu’il ait le droit d’accéder au tuner TNT.
Sous Ubuntu
apt-get install curl curl http://apt.tvheadend.org/repo.gpg.key | sudo apt-key add - apt-add-repository http://apt.tvheadend.org/stable apt-get install tvheadend
TvHeadend est à présent installé, rendez vous page 2 de cet article pour la suite.
Lancement au démarrage
Copiez le code suivant dans /etc/init.d/tvheadend s’il n’est pas présent. Sachez que ce fichier est disponible dans les sources que vous avez téléchargées tout à l’heure. Son nom est tvheadend.init.
#! /bin/sh ### BEGIN INIT INFO # Provides: tvheadend # Required-Start: $local_fs $remote_fs udev # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO # Author: Andreas Öman # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/usr/sbin:/usr/bin:/sbin:/bin DESC="Tvheadend" NAME=tvheadend DAEMON=/usr/bin/$NAME PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Configure command line options [ "$TVH_ENABLED" = "1" ] || exit 0 ARGS="-f" [ -z "$TVH_USER" ] || ARGS="$ARGS -u $TVH_USER" [ -z "$TVH_GROUP" ] || ARGS="$ARGS -g $TVH_GROUP" [ -z "$TVH_CONF_DIR" ] || ARGS="$ARGS -c $TVH_CONF_DIR" [ -z "$TVH_ADAPTERS" ] || ARGS="$ARGS -a $TVH_ADAPTERS" [ -z "$TVH_HTTP_PORT" ] || ARGS="$ARGS -w $TVH_HTTP_PORT" [ -z "$TVH_HTSP_PORT" ] || ARGS="$ARGS -e $TVH_HTSP_PORT" [ "$TVH_DEBUG" = "1" ] && ARGS="$ARGS -s" # Load the VERBOSE setting and other rcS variables [ -f /etc/default/rcS ] && . /etc/default/rcS # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started udevadm settle start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $ARGS \ || return 2 } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac :