Remplacer sa box – Tvheadend : la télévision sur le réseau

 

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

:

francois

Passionné par les nouvelles technologies depuis ma jeunesse, je continue aujourd'hui par mon métier cette passion. Toujours curieux, je tiens ce blog comme mémo de mes découvertes et profite de cet espace pour vous les faire partager.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *