FreePlayer

Le FreePlayer permet de lire depuis la FreeBox / Télévision n’importe quel fichier vidéo stocké sur un ordinateur.

Pré-requis

Il faut pour celà :

  • une FreeBox reliée à une télévision (…)
  • avoir lu les explications du FreePlayer
  • une version de VLC supérieure à 0.8.3
  • un ordinateur suffisamment puissant (au moins Pentium III 500)
  • avoir accepté les nouvelles conditions d’utilisation Free (et attendu au moins 24h)
  • avoir configuré l’adresse du PC dans la configuration du routeur de la FreeBox

Ensuite, il suffit de suivre les instructions, d’appuyer sur le bouton “Univers” de la télécommande pendant quelques secondes et de choisir le menu FreePlayer.

“Mods”

La version FreePlayer fournie par Free est assez basique. De nombreux “mods” se sont développés, pour offrir plus de services et améliorations. Un bon “mod” est HomePlayer qui ajoute la lecture de WebTV, WebClips, Photos, et de nombreuses autres possibilités.

Sous Debian “Sarge”

La version de VLC présente dans la “Sarge” (0.8.2) n’est pas suffisante. Il vous faudra donc trouver un binaire plus récent, soit dans la sid (mais entraine une très grosse mise à jour du système), soit en la recompilant à la main.

Pour rendre cette opération plus facile Cédric Vincent a réalisé un script permettant la compilation d’un VLC minimaliste récent et de ses librairies nécessaires. Suivre les instructions à cette page.

Visionner des AVI ayant un mauvais ratio

Certains fichiers AVI possèdent un mauvais ratio hauteur / largeur (ex : les enregistrements en multiposte de France 4). Pour récupérer un affichage correct sur FreeBrowser, il faut ajouter dans la configuration de l’affichage des vidéos la ligne :

#EXTVLCOPT:aspect-ratio=4:3

MultiPoste

Présentation

Le multiposte est une nouvelle fonctionnalité qui permet de regarder la FreeTV sur un ou plusieurs PC. Pour celà, il suffit de rebooter la Freebox pour avoir la mise à jour du Firmware (20051223), et de pointer VLC sur la liste de lecture http://mafreebox.freebox.fr/freeboxtv/playlist.m3u .

Il est alors possible de regarder deux chaînes différentes simultanément (donc soit 2 chaînes sur 2 PC, soit 1 chaîne sur 1 PC et une autre sur la Freebox). Pour changer de chaîne, il faut consulter la liste de lecture et aller sur la chaîne désirée.

Enregistrement

Il est alors possible d’enregistrer le flux en provenance de la Freebox. Pour celà, via l’IHM, le plus facile est d’utiliser l’ “Assistant de Diffusion / Transcodage” et de définir ses propres options, comme par exemple : flux video en MPEG2 à 768 bps, flux audio en MP3 a 128 bps et un conteneur en MPEG1.

En ligne de commande, c’est un peu plus compliqué. Voici un exemple qui dumpe simplement le flux reçu :

vlc  rtsp://mafreebox.freebox.fr/freeboxtv/373   
   --sout-all --sout "#std{access=file,mux=mpeg1,url=stream-fb.mpeg}"

Ici, “rtsp://mafreebox.freebox.fr/freeboxtv/373” est la chaîne choisie dans le fichier playlist.m3u. (La 373 correspond par exemple à W9).

Il est ensuite possible de travailler un peu plus sur le transcodage, par exemple :

vlc rtsp://mafreebox.freebox.fr/freeboxtv/381 --sout-all
   --sout "#transcode{vcodec=mp4v,acodec=mp2a,vb=600,ab=96}:std{access=file,mux=avi,url=test.avi}"

Attention, celà nécessite un poste un peu plus puissant que le seul dump.

(Pour Windows, un intégré qui fait tout simplement : http://adsltv.free.fr/)

Programmation de l’enregistrement

Voici un jeu de deux scripts pour programmer facilement un enregistrement sous Linux. Les points importants à noter :

  • la durée est programmée via un sleep en fond de tache
  • pour pouvoir lancer vlc sans terminal, il faut activer l’option –rc-fake-tty, sinon le mode remote command ne peut pas être activé, et l’interface GTK s’ouvre par defaut.
  • j’utilise ici le programme netcat pour envoyer la commande par TCP/IP ; tout autre programme du même type peut convenir
  • le mode mpeg1 permet au flux généré de pouvoir être lu par exemple par Media Classic Player avant ré-encodage.
  • la planification est gérée par at
  • un fichier d’alias est utilisé pour permettre des noms de chaines plus intuitifs que 373, et puis pour pouvoir utiliser plus tard les identifiants FreeGuide. Le format du fichier est : <liste d’alias>[tabulation]<numéro FreeTV>[tabulation]<commentaire>

Un premier script freetv-dump.sh, pour sauver le flux pendant un laps de temps donné :

#! /bin/sh
# freetv-dump.sh <channel> <duration> <file>
# ex : freetv-dump.sh f2 1h42 f2-journal
 
CHAINE="$1"
DUREE="$2"
FILE="$3"
PORT="4212"
DUMPFILE="/space/Temp/stream.mpeg"
DUMPPATH=
CHANNELS_FILE=/home/remi/bin/freetv_channels
 
VLC=/usr/local/bin/vlc
NC=nc
 
#Alias
RCHAINE=$(cat /home/remi/bin/freetv_channels | grep $CHAINE | cut -f 2)
if [ "x$RCHAINE" = "x" ]
then
 RCHAINE=$CHAINE
fi
 
# File
if [ "x$FILE" = "x" ]
then
 RFILE="$DUMPFILE"
else
 if [ $(dirname "$FILE") = "." ]
 then
  RFILE=$(dirname "$DUMPFILE")/"$FILE".mpeg
 else
  RFILE="$FILE"
 fi
fi
 
# Duration
RDUREE=$(echo $DUREE | sed -e 's/[h:]/*60+/i' | bc)
 
#Summary
echo "FreeTV_Dump - (c) 2006 - Remi Peyronnet"
echo "Channel  : $CHAINE ($RCHAINE)"
echo "Duration : $DUREE ($RDUREE m)"
echo "File     : $FILE ($RFILE)"
sleep 2
 
URL="rtsp://mafreebox.freebox.fr/freeboxtv/$RCHAINE"
SOUT='#std{access=file,mux=mpeg1,url='$RFILE'}'
 
# Programming the exit call
sleep "$RDUREE"m && (echo quit | $NC localhost "$PORT") &
 
# Saving
$VLC -I rc --rc-fake-tty --rc-host localhost:4212  "$URL" --sout-all --sout "$SOUT"

Un deuxième script pour programmer l’enregistrement avec la commande at :

#! /bin/sh
# freetv-record.sh <channel> <time> <duration> <file>
# Ex : freetv-record.sh f2 "13:00 22.12.05" "2:12" journal
 
echo '/home/remi/bin/freetv-dump.sh "'$1'" "'$3'" "'$4'"' | at $2

Programmes TV

Tout celà c’est bien, mais pour s’y retrouver au milieu de toutes ces chaînes, mieux vaut être équipé d’un bon programme TV. Pour celà, il existe des solutions électroniques (EPG : Electronic Program Guide). Un des programmes agréables à utiliser et disponible dans la sarge est FreeGuide.

Pour fonctionner, celui-ci a besoin des données des programmes TV au format XML. Le programme xmltv permet de récupérer ces programmes. Attention, la version disponible dans la sarge ne fonctionne pas pour la France. Installez le packages pour avoir les bons modules perl installés, puis téléchargez le script tv_grav_fr depuis le cvs d’xmltv.

Il ne reste plus qu’à relier FreeGuide et les scripts d’enregistrement pour avoir une magnifique interface facile pour programmer un enregistrement. To bo continued…

VLC & Coupure de Flux

Il faut pour pouvoir capter le flux de la Freebox que le module RTSP de VLC soit présent. Ce n’est pas le cas de la version proposée par Cédric Vincent, mais c’est le cas de la 0.8.2 de la Sarge. Cependant celle-ci présente quelques problèmes qui ont la facheuse tendance de couper le flux.

Pour remedier à ce problème, et pour pouvoir disposer d’une 0.8.4 permettant de servir à la fois à :

  • FreePlayer (httpd)
  • Réception FreeTV (RTSP)
  • Transcodage, avec XVID & MP3

Voici une adaptation du script de Cédric Vincent :

  • Installer les Packages Debian suivant : libxvidcore4-dev + liblame-dev + liblivemedia-dev (repository debian-marillat)
  • Configurer et construire ffmpeg :
./configure --enable-pp --enable-mp3lame --enable-xvid --enable-a52 --enable-gpl
make
  • Configurer et construire VLC :
./configure 
  --enable-release 
  --disable-wxwidgets --disable-skins2 --disable-smb 
  --enable-livedotcom --with-ffmpeg-tree=../../../ffmpeg/ --with-ffmpeg-mp3lame
  --with-libmpeg2-tree=../../../mpeg2dec-0.4.1-cvs/  --with-dvbpsi-tree=../../../libdvbpsi4-0.1.5/ 
  --with-mad-tree=../../../libmad-0.15.1b/ 
  --enable-freetype 
make
make install