Une station multimédia sous Linux

Lire des fichiers vidéo, des DVDs, des fichiers MP3/OGG, des CDs audio, regarder des photos facilement sur un seul appareil, avec du logiciel libre... c'est possible !

Chaque constructeur/éditeur/intégrateur/assembleur (rayez les mentions inutiles) y va de sa solution, bien évidemment propriétaire. Et comme vous pouvez l'imaginer, ces solutions souffrent des défauts habituels : fermeture, incompatibilités, non-évolutivité... On peut citer, entre autres, TiVo (une "set-top-box", disponible aux USA et en Grande-Bretagne), Sony Vaio Media, présent sur tous les PC Sony, ou encore Windows Media Center pour Microsoft.

Cependant, des solutions basées sur des logiciels libres existent.

Objectifs

Le but de cette série d'articles est de mettre en place une station multimédia de salon sous GNU/Linux, afin de remplacer les appareils habituels : lecteurs CD audio, DVD, radio, télévision...

Nos objectifs sont les suivants :

  • installer une station multimédia sans déparer pas le salon ;
  • avoir une interface compréhensible par tous, sans aucune connaissance du système installé ;
  • lire des vidéos : DVD, VCD, DivX, MPEG, etc ;
  • écouter des MP3/OGG, des CD audio, des webradios ;
  • visualiser des photos, faire un diaporama ;
  • piloter le système avec une télécommande unique ;
  • consulter les informations, la météo, etc ;
  • et pourquoi pas plus ?

A chaque utilisateur de piocher parmi ces possibilités, en fonction de ses besoins.

Plusieurs solutions existent pour créer une station multimédia sous GNU/Linux, nous en retiendrons quatre :

  • GeeXboX ;
  • MPlayer ;
  • MythTV ;
  • Freevo.

GeeXboX

La distribution GeeXboX est à l'origine (fin 2002), selon les propres mots de ses créateurs, une "DivX-box". Elle peut maintenant lire la plupart des formats vidéo (y compris les DVDs et la télévision) et audio.

Elle se présente sous la forme d'un CD démarrable ("bootable") de 6 Mo (oui, vous avez bien lu). Elle est basée exclusivement sur MPlayer, et son option "menu OSD".

Néanmoins, cette distribution ne répond pas aux objectifs cités : elle est totalement orientée vidéo et audio, et aucune fonctionnalité ne permet, par exemple, le visionnage de diaporamas.

Pour une utilisation simple et une installation rapide, pourquoi pas... mais nous ne nous attarderons pas sur cette distribution, car le but de cet article est d'obtenir une station très personnalisable, et qui fasse un peu plus que de la vidéo et de la musique...

geexbox.jpg

MPlayer

Pour les plus bricoleurs, il est possible d'utiliser MPlayer et ses menus OSD, qui sont en effet entièrement configurables. Le paquet MPlayer de Debian en inclut un par défaut, qu'il est possible d'activer avec les arguments -menu -menu-startup. Il doit être configuré dans le fichier ~/.mplayer/menu.conf ou /etc/mplayer/menu.conf. Le résultat peut être identique à GeeXboX, voire plus abouti. Concrètement, il est possible de quitter MPlayer en retournant un code au choix, il devient donc envisageable de commander des programmes extérieurs à partir de MPlayer, par exemple avec un script de ce type :

while 1
do
 mplayer
 RC=$?
 [ $RC == 1 ] && gqview
 [ $RC == 2 ] && xine --plugin=goom
done

MythTV

MythTV est un poids lourd des stations multimédia libres. Mais avant tout, c'est un lecteur de TV et un magnétoscope numérique programmable. De ce fait, son interface est très orientée "TV". Il existe des greffons pour lire des vidéos, des musiques, regarder des photos, jouer, naviguer sur Internet, consulter la météo... et sa configuration se fait à partir d'une interface graphique.

MythTV se décompose en back-end, front-end, Il est basé sur différents logiciels et bibliothèques, dont Qt, MySQL... Non, non, ne criez pas ! Enfin si, criez... je vous avais bien dit que c'est un "poids lourd". Même si on ne l'utilise pas, la base MySQL est obligatoire. Elle sert au stockage des infos de programmation d'enregistrement TV.

De plus, une interface en Qt, c'est adapté à un ordinateur de bureau "normal", mais à mon humble avis, ce n'est pas le choix le plus judicieux pour une application multimédia "plein écran".

Par contre, il faut bien avouer que MythTV est techniquement le plus avancé, et qu'il propose le plus de fonctionnalités.

A cause de ses dépendances (surtout sur MySQL...) et de son orientation "TV", cette solution ne nous satisfait pas... et à vrai dire, je n'ai jamais réussi à correctement l'installer.

mythtv.png

Freevo

Voici le logiciel que nous allons découvrir. Il ne présente pas autant de fonctionnalités et il n'est pas aussi abouti que MythTV, mais il a le mérite d'être léger et de faire ce qu'on attend de lui. Contrairement à MythTV, c'est un logiciel "mono-bloc", simple à installer. Il utilise, entre autres :

  • le langage Python ;
  • la bibiothèque SDL (par l'intermédiaire de Pygame) ;
  • la bibliothèque Python Imaging Library ;
  • les logiciels Mplayer et/ou Xine.

L'avantage de Freevo est que tout est greffon, tout peut être activé ou désactivé. Il peut être contrôlé aussi bien au clavier qu'avec une télécommande, il peut être utilisé sans TV, simplement sur un ordinateur classique.

Les greffons disponibles pour Freevo permettent entre autres :

  • la lecture de tous types de vidéos ;
  • l'écoute de tous fichiers musicaux ;
  • le visionnage de diaporamas ;
  • la gestion de listes de lecture ;
  • le jeu (grâce à des émulateurs, par exemple) ;
  • la consultation des données météo...

Le paramétrage se fait exclusivement par des fichiers de configuration, ce qui nous permettra d'affiner facilement la configuration.

freevo.jpg

Matériel

Avant de nous lancer dans l'installation logicielle, parlons un peu du matériel. Freevo fonctionne sur n'importe quelle configuration supportée par Linux, il n'a aucun prérequis matériel. Cependant, il est recommandé d'avoir un processeur à 400 MHz minimum (suffisant pour la lecture de DivX), voire plus (800 MHz minimum pour la lecture de DVD sans carte d'accélération). Pour obtenir une station discrète dans le salon, vous pouvez vous tourner vers un mini-PC, un barebone... Pensez éventuellement à réduire les émissions sonores, en agissant sur la ventilation, les vibrations, etc. Le projet OM-Cube, décrit par Patrice Kadionik dans GNU/Linux Magazine numéro 62 de juin 2004, peut s'avérer intéressant dans ce cas.

En plus du PC, vous pouvez connecter par exemple:

  • un système audio (haut-parleurs de PC ou chaîne hifi) avec entrée analogique ;
  • un système audio avec entrée numérique (S/PDIF) ;
  • un téléviseur ;
  • un récepteur de télévision connecté au PC (carte TV PCI ou USB...) ;
  • un récepteur de télévision externe (Freebox, satellite, câble...) ;
  • une télécommande ;
  • un émetteur infra-rouge (pour commander les appareils supplémentaires).

Nous étudierons certains de ces éléments par la suite.

Une fois que le matériel est prêt, il faut installer un système d'exploitation qui accueillera Freevo, ainsi que les logiciels multimédia qu'il utilisera.

Système d'exploitation

Freevo fonctionne sur la majorité des systèmes d'exploitation de type Unix grand public. La documentation officielle (http://freevo.sourceforge.net/cgi-bin/doc/Installation) traite de Mandrake, Fedora, SuSE, Debian, Ubuntu, Gentoo et MacOS X.

J'ai choisi une distribution Debian GNU/Linux : c'est la distribution idéale pour pleinement maitriser la configuration. A vrai dire, aucun choix n'est meilleur qu'un autre : tant que le logiciel peut y fonctionner, toutes les distributions se valent, comme d'habitude. L'aspect plutôt dépouillé de la Debian permettra cependant d'avoir un système aussi léger que possible.

Aucune configuration particulière n'est requise, chacun peut faire comme bon lui semble. Sera décrite ici la configuration que j'ai choisi de mettre en place. J'ai commencé par faire une installation comme j'en ai l'habitude : système en anglais, clavier en français, aucun choix de paquet spécifique... Afin de simplifier l'installation et d'être sûr de ne pas perdre de place, j'ai décidé de ne faire qu'une seule grosse partition (en plus de la swap), avec le système de fichiers ext3.

Utilisateur(s)

Pour utiliser Freevo, nous allons créer un utilisateur dédié : l'utilisateur freevo. Donnons-lui également les droits nécessaires à la lecture de fichiers audio et vidéo, et à l'accès au CD-Rom.

adduser freevo
adduser freevo audio
adduser freevo video
adduser freevo cdrom

Pour le mot de passe, il n'y a aucune contrainte ; de toute façon, il ne sera jamais utilisé. Tous les fichiers multimédia appartiendront à cet utilisateur, il faut donc que son répertoire soit vaste. Il est préférable de le mettre sur une partition distincte de celle du système, pour éviter des problèmes dûs à un système de fichiers plein.

Vous pouvez également créer cet utilisateur directement à l'installation du système, auquel cas il aura directement des droits relativement permissifs.

Localisation

Nous allons configurer le système en français et avec les tables de caractères UTF-8. Tout d'abord reconfigurez locales (dpkg-reconfigure locales), en demandant de compiler les différentes locales fr_FR (fr_BE, fr_CA, ou autres, selon les cas), puis ne sélectionnez aucune localisation par défaut. Éditez ensuite le fichier /etc/environment comme suit :

LANGUAGE=fr_FR.UTF-8
LC_ALL=fr_FR.UTF-8
LANG=fr_FR.UTF-8

Dorénavant, le système sera par défaut en français et en UTF-8.

Interface graphique

De par l'utilisation de la bibliothèque SDL, Freevo peut fonctionner sans serveur X. En effet :

  • SDL sait afficher sur le framebuffer ;
  • MPlayer peut utiliser SDL ou même directement le framebuffer ;
  • il existe une version framebuffer de Xine.

Cependant, la configuration que nous allons mettre en place utilisera tout de même un serveur X. Les raisons sont multiples :

  • votre carte graphique n'a pas forcément d'accélération en framebuffer ;
  • le serveur X permet de faciliter les opérations ;
  • cela nous permettra d'interagir avec d'autres programmes qui, eux, ne connaissent ni SDL ni le framebuffer.

Encore une fois, pour minimiser l'empreinte du système, un nombre minimal de paquets va être installé. Bien que ce ne soit pas indispensable, nous allons quand même installer Ion, un gestionnaire de fenêtres léger qui aura son utilité dans certains cas (lancement de programmes externes par exemple). Nous choisissons spécifiquement ce logiciel car sa façon de gérer les fenêtres permettra de n'en afficher qu'une à la fois, en optimisant l'utilisation de l'écran.

apt-get install xserver-xorg xbase-clients xfonts-100dpi xfonts-base xfonts-scalable xterm ion3

Chacun peut évidemment choisir d'autres paquets selon ses envies. De même, pour la configuration du serveur X, chacun fera selon ses désirs et son matériel...

Un point important dans la configuration de X est la définition de l'écran : bien que mon moniteur LCD puisse afficher 1280x1024 pixels, je me suis limité à 800x600, car au-delà, Freevo montre des baisses de performance gênantes.

De plus, les skins de Freevo sont étudiés pour une définition de 800x600 et c'est la meilleure définition si l'on veut afficher Freevo sur une télévision. Sur un écran LCD, les pixels sont flous (c'est inévitable, quand on n'utilise pas la définition native de l'écran), mais ça ne se remarque pas à distance raisonnable : cet ordinateur étant destiné à rester dans le salon en tant que téléviseur, il sera utilisé à plus de 2 mètres de distance.

Accélération du démarrage

Bien que beaucoup d'entre nous laissent leurs ordinateurs allumés jour et nuit, cela ne plaira peut-être pas à tout le monde. Et, il faut l'avouer, une distribution GNU/Linux ne démarre pas très rapidement. Il y a quelques techniques pour accélérer la procédure de démarrage. Ce chapitre n'a pas pour but de décrire ces techniques dans le détail, mais de voir quelques pistes à exploiter.

Discover : A partir de Sarge, la distribution Debian GNU/Linux utilise l'outil discover pour détecter le matériel installé et charger les modules appropriés. Étant donné que l'ordinateur n'est pas amené à évoluer, une fois que la détection est faite, il est plus pratique de mettre la liste des modules chargés dans le fichier /etc/modules et de désinstaller discover.

Noyau : Le noyau Linux peut être recompilé afin de le simplifier, et de n'inclure que le strict nécessaire. A chacun de faire son choix...

Services lancés au démarrage : Plusieurs services démarrent avec l'ordinateur, et ceux-ci ne sont pas nécessaires. Autant les arrêter, voire les désinstaller. Il peut être préférable de garder SSHd, mais Inetd, Portmap et autres ne sont pas indispensables. Il est également possible de modifier le système d'initialisation pour lancer certains scripts en parallèle.

Lancement automatique de X

Freevo propose un script de démarrage automatique et peut démarrer un serveur X ou s'afficher en Framebuffer, mais ces options n'offrent pas la flexibilité dont nous aurons besoin à certains moments. De plus, fabriquer soi-même la procédure de démarrage permet de maitriser le système de bout en bout.

Pour le démarrage automatique d'une session X, la solution idéale et propre serait d'installer un Display Manager tel que KDM, et de configurer la (re)connexion automatique d'un utilisateur. Mais cette solution est plutôt lourde, alors qu'il y a beaucoup plus simple.

Pour ce faire, remontons un peu dans le temps, mettons les mains dans le cambouis, et modifions ce bon vieux fichier /etc/inittab :

x:3:respawn:/usr/local/bin/x-freevo-dm.sh

Sous l'identifiant "x", dans le runlevel 3 (celui par défaut de Debian), le système exécute /usr/local/bin/x-freevo-dm.sh, et le réexécute s'il plante (respawn). Ce script, qui tient lieu de display manager, est simplissime ; il exécute la commande startx en tant qu'utilisateur freevo, sur une session "login" (login shell) :

#! /bin/sh
exec /bin/su - -c "startx >/tmp/dot.xsession-errors 2>&1" freevo

Le fichier ~freevo/.xsession est à adapter pour exécuter automatiquement, en premier lieu, un xterm :

# /etc/environment n'est pas pris en compte, étrange...
export LC_ALL="fr_FR.UTF-8"
export LANG="fr_FR.UTF-8"
export LANGUAGE="fr_FR.UTF-8"
# Interdire l'écran noir
xset s noblank
xset s off
xset -dpms
# Gestionnaire de fenêtres
ion &
# Et un Xterm qu'on voit de loin
xterm -fn "-*-fixed-*-*-*-*-*-200-*-*-*-*-*-*"

La commande telinit q permet de prendre en compte ces modifications. Par la suite, un redémarrage de la machine nous prouvera que cette procédure fonctionne correctement ;)

Une fois dans le xterm lancé par .xsession, la commande exit (ou Ctrl-D) permet non seulement de quitter le terminal, mais également de terminer la session X. Par conséquent, à terme, quitter Freevo redémarrera également le serveur X.

Lorsque votre installation de Freevo vous semblera utilisable, il ne restera plus qu'à remplacer la ligne xterm [...] par freevo.

MPlayer

mplayer.png

Tout d'abord, configurons APT pour qu'il puisse télécharger MPlayer et les paquets dont il dépend. En effet, ce logiciel n'est pas inclus dans la distribution Debian par défaut, pour des raisons de licences.

Un dépôt APT, maintenu par Christian Marillat, propose MPlayer et tous les outils nécessaires à la lecture de fichiers multimédia divers. Ajoutons donc la ligne suivante au fichier /etc/apt/sources.list :

deb ftp://ftp.nerim.net/debian-marillat/ sid main

Ensuite, il faut mettre à jour la liste des paquets (apt-get update) et installer le paquet MPlayer qui correspond à l'architecture utilisée. Christian Marillat propose trois versions de MPlayer : une 386, qui fonctionnera sur tous les PC, une 586, qui fonctionnera à partir des Pentium Pro, et une k6, qui fonctionnera sur les processeurs AMD (K6, Athlon, etc).

Par exemple, pour un AMD Sempron, utilisez la commande :

apt-get install mplayer-k6

Comme vous pouvez le constater lors de son installation, MPlayer a beaucoup de dépendances : Christian Marillat a compilé une version qui regroupe un maximum de fonctionnalités.

MPlayer, tel qu'il est empaqueté, devrait pouvoir directement lire les fichiers audio et vidéo.

Xine

xine.png

Xine se décompose en deux parties : la bibliothèque libxine, réutilisable par d'autres logiciels, et le logiciel xine-ui, l'interface graphique par défaut.

Ces deux paquets sont directement accessibles dans la distribution Debian :

apt-get install xine-ui

Si vous aviez installé MPlayer auparavant, cela devrait suffire : les différentes bibliothèques nécessaires pour lire les fichiers habituels sont installées. Sinon, il vous faudra installer ces bibliothèques. Citons par exemple libogg, libvorbis, libtheora, pour lire les fichiers Ogg.

Autres fichiers/médias

Afin de lire d'autres formats audio ou vidéo, il est nécessaire d'installer des paquets supplémentaires. Ces paquets sont tous disponibles sur le dépôt de Christian Marillat.

apt-get install w32codecs libdvdcss2 libdvdread3

Avec ces deux programmes et ces quelques paquets, vous voici parés : les fonctionnalités basiques de Freevo pourront être exploitées.

Mandriva

Concernant MPlayer et Xine, les utilisateurs de Mandriva seront certainement intéressés par les paquets issus de PLF : http://plf.zarb.org. Ensuite, URPMI est leur ami ;)

Sortie S/PDIF

Si vous connectez votre ordinateur à votre ensemble audio par le biais d'une connexion numérique (fibre optique ou câble coaxial), il peut être nécessaire de configurer MPlayer et Xine en conséquence.

En effet, sur certaines carte son, la sortie numérique (S/PDIF) n'est pas câblée sur le même circuit que la sortie normale. C'est le cas par exemple des Sound Blaster Live.

L'astuce décrite ici porte sur Alsa (Advanced Linux Sound Architecture). Étant donné que toutes les distributions récentes utilisent Alsa, et que OSS (Open Sound System) est de moins en moins utilisé, il est fort probable que vous utilisez déjà Alsa.

Mplayer propose l'option -ao. La commande mplayer -ao help liste les sorties audio disponibles, qui incluent alsa. Pour certaines cartes Sound Blaster Live, la sortie numérique est la 3 ème sortie (numérotée 2, le compte commence à 0) de la première carte ; sur d'autres modèles, c'est la 4 ème sortie. Dans le cas de la 3 ème sortie, la commande à utiliser sera mplayer -ao alsa:device=hw=0.2 <fichier>. N'hésitez pas à expérimenter pour trouver les réglages pour votre carte son.

Quand vous avez validé le bon fonctionnement de la sortie S/PDIF, vous pouvez ajouter ce paramètre dans la configuration "définitive" de MPlayer, en ajoutant la ligne suivante au fichier ~/.mplayer/config :

ao=alsa:device=hw=0.2

Les réglages pour Xine sont plus complexes à mettre en place que ceux de MPlayer. Une fois que vous avez trouvé, grâce à ce dernier, le réglage à appliquer, modifiez ou créez le fichier ~/.asoundrc en ajoutant les lignes suivantes (exemple de la 3 ème sortie sur la carte 0) :

pcm.xine {
  type   hw
  card   0
  device 2
}

Ensuite, configurez Xine par son interface graphique (ou modifiez son fichier de configuration directement, ~/.xine/config), pour obtenir le réglage suivant :

audio.device.alsa_default_device:xine
audio.device.alsa_front_device:xine

Cette manipulation n'est toutefois pas toujours nécessaire. Par exemple, avec le chipset nForce et le pilote propriétaire de NVidia, la sortie S/PDIF fonctionne correctement sans modification.

DMA

Il est possible que vous ayez remarqué des sauts à la lecture d'un DVD, par exemple. Si c'est le cas, il est probable que le DMA (Direct Memory Access) ne soit pas activé sur votre lecteur DVD. Pour l'activer, utilisez la commande suivante :

hdparm -d 1 /dev/hdc

(pour un disque en maître sur le second canal IDE)

Et pour une application définitive, insérez cette commande dans un script de démarrage tel que /etc/init.d/bootmisc.sh.

Installation de Freevo

Une fois qu'un système d'exploitation est prêt, et que la lecture de fichiers multimédia est fonctionnelle, il est temps d'installer Freevo. Des paquets Debian sont disponibles pour la distribution Sid ; ils sont accessible avec la source suivante (/etc/apt/sources.list) :

deb http://freevo.sourceforge.net/debian unstable main

Un petit apt-get update en passant, et apt-cache search freevo. Surprise ! nous avons trois paquets qui correspondent :

  • freevo : le logiciel, Freevo, lui-même ;
  • freevo-media : thèmes, polices, et autres pour Freevo ;
  • freevo-plugin-weather : greffon de météo "avancé" pour Freevo.

Installons ce logiciel :

apt-get install freevo

Concernant les questions posées par debconf, les réponses n'ont pas grande importance, étant donné que nous allons reconfigurer le programme "à la main" par la suite. Par contre, il faut répondre "Non" à la question "Should freevo start automatically on bootup" : nous avons créé une procédure de démarrage qui n'est pas en relation avec ce que le paquet Debian propose.

Droits utilisateur

Freevo utilise le répertoire /var/cache/freevo pour stocker ses données "de cache" (imagettes - thumbnails - des photos, des vidéos, listes des fichiers audio...). Si ce répertoire n'existe pas, et que l'utilisateur n'a pas les droits nécessaires pour le créer, /tmp/freevo est utilisé, mais c'est une mauvaise idée. Pour donner les bons droits à l'utilisateur, les commandes suivantes sont à taper en root :

mkdir /var/cache/freevo
chown freevo:freevo /var/cache/freevo

Cela limite l'utilisation de Freevo à un seul utilisateur par système, car si ce répertoire existe mais que l'utilisateur en cours n'a pas les droits nécessaires pour y écrire, certaines opérations échouent "silencieusement" (à part un traceback dans la fenêtre de sortie si Freevo est exécuté en ligne de commande). De plus, il n'est pas possible de spécifier un chemin différent dans la configuration de Freevo. Par conséquent, pour expérimenter Freevo à plusieurs utilisateurs sur un même système, il est préférable de ne pas créer ce répertoire, et donc de ne pas profiter du système de cache. Il est éventuellement possible de donner les droits d'écriture sur /var/cache/freevo à plusieurs utilisateurs, mais il risque d'y avoir des conflits concernant le contenu des données...

La commande freevo

Vous pouvez d'ores et déjà exécuter freevo à partir du xterm exécuté par défaut, afin de "jeter un coup d'oeil". Vous pourrez "visiter" Freevo dans sa configuration par défaut, avec les menus "Regarder la Télé", "Regarder un Film", "Ecouter de la Musique", "Regarder des Photos", et "Arrêter".

Au premier démarrage de Freevo, des messages d'erreur "error opening file" peuvent apparaître sur la console. Apparement, c'est un léger bug de Freevo, qui s'emmêle les pinceaux quand le répertoire de cache n'est pas encore initialisé. A partir du deuxième démarrage, ces messages n'apparaissent plus.

La commande freevo, non contente de démarrer l'application, permet également diverses manipulations et l'obtention d'aide sur certains sujets. La commande freevo --help permet de s'informer sur ses possibilités. Ensuite, utilisez freevo <option> --help pour plus d'aide sur chacune des options.

Le cache

Freevo maintient un "cache" des données auxquelles il peut accéder, afin d'être plus réactif à l'utilisation : imagettes des photos, listes de musiques, etc. Ce cache est régénéré avec la commande freevo cache, qu'il faut réexécuter régulièrement. Alors pourquoi ne pas la mettre, par exemple, en crontab toutes les nuits à 5h30 ? Editer la crontab de l'utilisateur avec la commande crontab -e, et ajouter la ligne suivante :

30 5    * * *   /usr/bin/freevo cache >/dev/null 2>&1

Fichiers de configuration

Les fichiers de configuration peuvent être situés dans deux répertoires :

  • /etc/freevo/ pour la configuration "system-wide"
  • ~/.freevo/ pour la configuration spécifique à un utilisateur

Quel que soit le répertoire utilisé, le résultat sera le même. Par ailleurs, les fichiers de configuration peuvent être situés dans des répertoires différents : un fichier dans /etc/freevo/, un autre dans ~/.freevo/... cela ne gêne pas Freevo.

La documentation officielle de Freevo mentionne bien sûr la plupart des points qui vont suivre : http://freevo.sourceforge.net/cgi-bin/doc/Configuration.

Configuration globale

La configuration "globale" de Freevo s'effectue dans le fichier freevo.conf. Sa syntaxe est la suivante (Attention : les espaces autour du signe "égal" sont très importants) :

<directive> = <valeur>

Afin de le générer, la commande suivante doit être exécutée :

freevo setup

Cette commande peut prendre les arguments --geometry, --display, --tv, --chanlist. Les valeurs de ces arguments sont précisées plus loin. Sans argument, une configuration par défaut a été générée dans ~/.freevo/freevo.conf. Ce fichier peut contenir les directives suivantes :

  • version : la version du fichier freevo.conf ; pour Freevo 1.5.3, cette version doit être 2.1 ;
  • geometry : la géométrie d'affichage de l'écran (peut être "800x600", "768x576" ou "640x480") ;
  • display : méthode d'affichage ("x11", "dga", "fbdev", "directfb", "dfbmga", "mga", "dxr3") ;
  • tv : norme utilisée pour la télévision ("ntsc", "pal", "secam")
  • chanlist : liste de canaux à utiliser par défaut ("europe-west", "france", "canada-cable" par exemple ; pour une liste complète, utiliser la commande freevo setup --help).

En plus de ces directives, ce fichier contient les chemins absolus vers les commandes que Freevo est susceptible d'utiliser : mplayer, mencoder, tvtime, xine, fbxine, lsdvd, jpegtran, xmame.x11, xmame.SDL, ssnes9x, zsnes, lame, flac, cdparanoia, oggenc, renice, setterm, mpav.

Configuration de l'interface

La configuration des différents greffons chargés par Freevo se fait dans le fichier local_conf.py. Attention : pour simplifier les opérations, ce fichier est dans le langage Python, ce qui impose une règle très importante : il ne doit pas y avoir d'espace avant les noms des variables (pour plus d'informations sur cette règle, consulter http://www.python.org/doc/faq/general.html#why-does-python-use-indentation-for-grouping-of-statements). Dans ce fichier, les noms de variables sont toujours en majuscules. Elles peuvent être spécifiées dans n'importe quel ordre. Une variable binaire (oui/non) a comme valeur 1 pour "oui" et 0 pour "non". Les commentaires commencent par le signe dièse (#).

Un exemple de ce fichier est disponible dans /usr/share/doc/freevo/local_conf.py.example.

Le premier paramètre à préciser dans ce fichier est la version de la configuration (sur le même principe que pour le fichier freevo.conf. Avec Freevo 1.5.3, la ligne nécessaire est CONFIG_VERSION = 5.15.

Nous allons reprendre ici les paramètres globaux (qui ne sont pas spécifiques à un greffon) que l'on peut mettre dans ce fichier. Cette liste n'est pas exhaustive.

Configuration audio

AUDIO_DEVICE périphérique à utiliser pour la sortie audio (/dev/dsp par défaut)
AUDIO_INPUT_DEVICE périphérique à utiliser pour l'enregistrement
MAX_VOLUME volume maximal de sortie (utile pour les cartes qui saturent au delà d'un certain seuil)
DEFAULT_VOLUME volume par défaut au lancement de Freevo (40 par défaut ; ce n'est pas suffisant)
TV_IN_VOLUME volume de la TV (lors de la réception de canaux par le tuner intégré)
VCR_IN_VOLUME volume de la TV (lors de la réception par l'entrée auxiliaire)
DEV_MIXER le périphérique de mixage audio (/dev/mixer par défaut)

Fonctionnement général

START_FULLSCREEN_X démarrer Freevo en plein écran sous X (désactivé par défaut)
CONFIRM_SHUTDOWN confirmer l'arrêt de Freevo (activé par défaut)
ROM_DRIVES liste des lecteurs CD/DVD (détection automatique par défaut)
HIDE_UNUSABLE_DISCS cacher les lecteurs des mauvais menus (par exemple dans le menu "audio" lors de l'insertion d'un DVD)
ROM_SPEED vitesse limite des CD/DVD (par exemple 8 pour que le lecteur soit silencieux)
ENABLE_SHUTDOWN_SYS arrêter le système à partir du menu de Freevo
MENU_ARROW_NAVIGATION dans les menus, utiliser la touche fléchée droite pour valider, et gauche pour annuler
USE_NETWORK utiliser CDDB, IMDB, etc pour récupérer des infos sur Internet (activé par défaut)
CACHE_IMAGES mettre les images en cache (utilise beaucoup d'espace disque, mais rend Freevo plus réactif)

Répertoires

DIRECTORY_SORT_BY_DATE classer les fichiers par date
DIRECTORY_REVERSE_SORT inverser le classement
DIRECTORY_AUTOPLAY_SINGLE_ITEM lancer immédiatement la lecture si un fichier est seul dans un répertoire (activé par défaut)
DIRECTORY_USE_MEDIAID_TAG afficher les informations des fichiers (tags ID3...) plutôt que le nom (activé par défaut)

Configuration des lecteurs CD

Bien que Freevo détecte automatiquement les lecteurs CD présents dans la machine, vous pouvez vouloir en cacher certains, ou encore leur donner un nom plus explicite ; Freevo les nomme "CD-1", "CD-2", etc.

Ceux qui connaissent le langage Python seront heureux d'apprendre que cette variable est une liste de tuples. Pour les autres, suivez simplement cette syntaxe :

ROM_DRIVES = [ # Montage          Device      Nom
               ('/media/cdrom0', '/dev/hdc', 'DVD'),
               ('/media/cdrom1', '/dev/hdd', 'CD'),
             ]

Notez cependant que, dans les deux cas, le nom du lecteur sera remplacé par le titre du disque détecté lors de son insertion.

Configuration idéale

Bien sûr, chacun aura ses réglages préférés. Je vous propose la partie "générale" de ma configuration.

CONFIG_VERSION = 5.15

MAX_VOLUME = 90 # Pas plus de 90%, pour ne pas saturer
DEFAULT_VOLUME = 90 # ... car en general, on regle le volume sur un amplificateur
START_FULLSCREEN_X = 1
ROM_SPEED = 8 # Pour que le lecteur CD ne fasse pas de bruit
CACHE_IMAGES = 1
MENU_ARROW_NAVIGATION = 1
USE_NETWORK = 1

... en n'oubliant pas le paramètre ROM_DRIVES !

Greffons

Par défaut, certains greffons sont activés (pour lire des vidéos, de la musique, regarder des photos, par exemple) ; mais il est tout à fait possible de les désactiver, et d'inhiber totalement, par exemple, le visionnage de photos. Pour activer ou désactiver un greffon, il faut utiliser les fonctions plugin.activate(<nom du greffon>) ou plugin.remove(<nom du greffon>). Par exemple, plugin.remove('tv') désactive la TV, et plugin.activate('audio.fxmms') permet d'utiliser XMMS. Pour obtenir la liste des greffons, utiliser la commande freevo plugins -l ; pour une liste détaillée, freevo plugins -a. Pour plus d'informations sur un greffon en particulier, freevo plugins -i <nom du greffon>.

Une centaine de greffons sont fournis directement avec Freevo. D'autres greffons sont disponibles à l'adresse suivante : http://freevo.sourceforge.net/addons/.

Lorsque l'on parlera de variables, ce sont des variables à configurer dans le fichier local_conf.py.

Télévision

La gestion de la télévision est un élément à part dans Freevo : avec son module d'enregistrement, son téléchargement de programmes TV sur Internet, etc, ce greffon nécessite un article à lui seul. Pour éviter les problèmes de configuration, nous allons le désactiver.

plugin.remove('tv')

Ce greffon fournit également un serveur web, qui permet de programmer l'enregistrement d'émissions à distance.

Audio / musique

Le greffon audio, chargé par défaut, permet de gérer les fichiers audio. C'est lui qui active l'entrée "Ecouter de la musique" du menu principal.

La sélection des répertoires qu'il doit lister est faite dans la variable AUDIO_ITEMS qui est une liste de 2-tuples, par exemple :

AUDIO_ITEMS = [ # Titre     Chemin
                ('Albums', '/home/freevo/Media/Musique/Albums'),
                ('Singles', '/home/freevo/Media/Musique/Singles'),
              ]

Quand on est dans un répertoire, Freevo peut afficher la couverture du disque concerné ; il suffit qu'un fichier cover.jpg ou cover.png soit présent dans le répertoire. Il est possible aussi d'associer des images à chaque fichiers audio, en nommant les images <titre>.jpg ou <titre>.png.

Les fichiers seront lus avec le programme spécifié dans la variable AUDIO_PREFERED_PLAYER, qui doit également être chargé en tant que greffon. Les greffons correspondant à des lecteurs audio sont les suivants :

  • audio.mplayer [chargé par défaut]: MPlayer ;
  • audio.mplayervbr : MPlayer optimisé pour les fichiers "variable bitrate" ;
  • audio.xine [chargé par défaut]: Xine ;
  • audio.fxmms : XMMS (le "f" n'est pas une erreur).

Pour cet usage, MPlayer est parfait : il peut lire tous les formats ou presque, est léger, rapide, fiable...

Les lignes suivantes sont donc ajoutées à local_conf.py :

AUDIO_ITEMS = [
                ('Albums', '/home/freevo/Media/Musique/Albums'),
                ('Singles', '/home/freevo/Media/Musique/Singles'),
              ]
AUDIO_PREFERED_PLAYER = 'mplayer'
freevo_menu_audio.png

Vidéos

Le greffon video, chargé par défaut, permet de gérer les fichiers vidéo. C'est lui qui active l'entrée "Regarder un Film" du menu principal.

La sélection des répertoires qu'il doit lister est faite dans la variable VIDEO_ITEMS qui est une liste de 2-tuples, par exemple :

VIDEO_ITEMS = [ # Titre     Chemin
                ('Div-X', '/home/freevo/Media/DivX'),
              ]

Les fichiers seront lus avec le programme spécifié dans la variable VIDEO_PREFERED_PLAYER, qui doit également être chargé en tant que greffon. MPlayer et Xine peuvent être utilisés pour lire des vidéos. Par contre, seul Xine permet de naviguer dans les menus du DVD.

VIDEO_ITEMS = [ ('Div-X', '/home/freevo/Media/DivX') ]
VIDEO_PREFERED_PLAYER = 'xine'
freevo_menu_video.png

Images

Le greffon image, chargé par défaut, permet de gérer les fichiers vidéo. C'est lui qui active l'entrée "Regarder des Photos" du menu principal.

La sélection des répertoires qu'il doit lister est faite dans la variable IMAGE_ITEMS qui est une liste de 2-tuples, par exemple :

IMAGE_ITEMS = [ # Titre     Chemin
                ('Photos', '/home/freevo/Media/Photos'),
              ]

Les autres paramètres intéressants sont le mode de passage d'une photo à l'autre, qui se configure dans la variable IMAGEVIEWER_BLEND_MODE :

  • None : aucun effet ;
  • -1 : effet aléatoire ;
  • 0 : fondu ;
  • 1 : recouvrement ;

ainsi que la durée d'affichage d'une photo en secondes, dans IMAGEVIEWER_DURATION (0 par défaut, qui résulte en l'absence d'un diaporama).

IMAGE_ITEMS = [ ('Photos', '/home/freevo/Media/Photos') ]
IMAGEVIEWER_BLEND_MODE = 0
IMAGEVIEWER_DURATION = 3
freevo_menu_image.png

Jeux

Tout comme pour la télévision, le greffon des jeux est plutôt complexe, et nécessite un article à lui seul.

Il permet par exemple de jouer à des jeux d'arcade ou de console grâce à XMESS et XMAME ou à des jeux Linux natifs tels que PlanetPenguin Racer (anciennement TuxRacer).

MPlayer

Il est possible d'ajouter des directives de configuration supplémentaires pour MPlayer, par l'intermédiaire de certaines variables.

MPLAYER_AO_DEV : périphérique de sortie de MPlayer (argument à l'option -ao du programme). Par défaut, cette valeur est à oss:/dev/dsp. Pour que la sortie audio numérique fonctionne (voir article précédent), il faut configurer cette variable à la même valeur que dans le fichier ~/.mplayer/config.

Si vous utilisez MPlayer pour lire des vidéos, les variables DVD_LANG_PREF et DVD_SUBTITLE_PREF peuvent vous intéresser - leur but est explicite. Utile également dans certains cas, la variable MPLAYER_AUTOCROP (oui/non) permet de redimensionner la vidéo pour supprimer les bordures noires excessives.

En vrac, les variables suivantes peuvent également être intéressantes : MPLAYER_VO_DEV, MPLAYER_VO_DEV_OPTS, MPLAYER_NICE, MPLAYER_SOFTWARE_SCALER, MPLAYER_ARGS, MPLAYER_SEEK_TIMEOUT, MPLAYER_AUTOCROP, MPLAYER_SET_AUDIO_DELAY, MPLAYER_VF_INTERLACED, MPLAYER_VF_PROGRESSIVE.

MPLAYER_AO_DEV = 'alsa:device=hw=0.2'

Xine

Par défaut, tout comme pour MPlayer, Freevo lance Xine avec la sortie audio OSS. Il faut donc, si nécessaire, régler la variable XINE_AO_DEV à alsa.

Les variables suivantes peuvent aussi être intéressantes : XINE_VO_DEV, XINE_ARGS_DEF.

XINE_AO_DEV = 'alsa'

Idlebar

Le greffon idlebar active une barre horizontal en haut de l'écran. Il est ensuite possible de charger d'autres greffons pour afficher des informations dans cette barre. Freevo fournit par défaut certains plugins pour l'idlebar.

Tous les plugins de l'idlebar prennent au moins l'option level, indiquant comment les classer dans la barre.

idlebar.mail nombre d'e-mails non lus dans la boîte locale
idlebar.MultiMail.MultiMail nombre d'e-mails non lus dans une boîte aux lettres (POP, IMAP, etc)
idlebar.clock horloge, alignée à droite
idlebar.cdstatus état des lecteurs CD
idlebar.tv expiration des listings de programmes TV
idlebar.weather météo locale actuelle
idlebar.holidays affiche une icône spécifique les jours fériés
idlebar.logo logo de Freevo
idlebar.system.procstats utilisation du processeur et de la mémoire
idlebar.system.sensors température de l'ordinateur
idlebar.volume volume actuel

Activons par exemple la météo (mesures de Paris Orly), l'état du lecteur CD, et l'horloge. Par défaut, l'heure est affichée avec le style américain. Pour changer son format, donner le format souhaité en argument, en utilisant la syntaxe des fonctions "strftime" C ou Python (c'est la même...).

plugin.activate('idlebar')
plugin.activate('idlebar.weather', level = 1, args = ('LFPO',))
plugin.activate('idlebar.cdstatus', level = 2)
plugin.activate('idlebar.clock', args = ('%d/%m/%y %H:%M',))
freevo_idlebar.png

Météo

En complément du greffon idlebar.weather, il en existe un plus complet, qui n'est pas livré avec Freevo. Il est disponible dans le paquet freevo-plugin-weather. Ce plugin permet d'accéder aux informations détaillées de la station, en ajoutant une entrée au menu principal de Freevo : conditions actuelles, prévision détaillée de la journée, prévision étendue sur quatre jours, image satellite.

apt-get install freevo-plugin-weather

Ce plugin ne prend pas d'argument ; par contre, il faut ajouter la variable PLUGIN_WEATHER_LOCATIONS, dont la syntaxe est la suivante : [ (<lieu>, <unités>, <nom>), (<lieu>, <unités>, <nom>) ]. Le lieu est une chaîne spécifiant une station météo, le champ unités est un booléen (1 = convertir en unitées SI, 0 = laisser en unités américaines - degrés farenheit, etc.) (facultatif), le nom est un nom personnalisé à afficher dans les menus (facultatif). Pour trouver l'information de lieu, il faut aller sur http://fr.weather.com, rechercher une ville. Lorsque vous êtes sur une page concernant le lieu souhaité, son code d'identification se trouve dans la barre d'adresse (quatre lettres suivies de quatre chiffres). Par exemple, pour afficher la météo de Paris et Bordeaux :

plugin.activate('weather', level = 50)
PLUGIN_WEATHER_LOCATIONS = [ ('FRXX0076', 1, 'Paris'), ('FRXX0016', 1, 'Bordeaux') ]

Envoyer la nouvelle pièce jointe « freevo_weather.png »

Autres greffons

Tous les greffons de Freevo ont bien sûr leur utilité. Cependant, certains seront plus intéressants que d'autres. Voici une sélection de quelques-uns de ces greffons. Leur utilisation n'est pas détaillée, utilisez la commande freevo plugins -i <nom du plugin> pour plus d'informations.

audio.coversearch Recherche des images de pochettes de CD audio sur Amazon. Nécessite un compte "webservices".
video.imdb Recherche des informations sur un film sur IMDB
video.moviecovers Recherche des jaquettes de films sur Moviecovers
headlines Affiche un flux RSS
icecast Démarre un serveur IceCast en arrière-plan
freevoscreensaver Démarre un économiseur d'écran quand Freevo a été inactif pendant un certain temps
audio.mplayervis Permet d'afficher des images animées aléatoires relatives à la musique en lecture (nécessite pygoom)
audio.detach Permet de "détacher" la lecture d'un fichier audio, afin de naviguer dans les menus en cours de lecture.
audio.detachbar Affiche les informations du fichier lu en mode "détaché" (dans l'idlebar si elle est activée)
audio.playlist Permet de créer des listes de lecture
audio.radio Permet d'écouter la radio (la vraie) si l'ordinateur est équipé d'une carte de réception radio
audio.radioplayer Lecteur pour audio.radio
command Permet d'exécuter des commandes à partir du menu principal.
df Affiche, dans les menus audio, vidéo, jeux et images, la place disponible sur la partition concernée
joy Permet de commander Freevo avec un joystick
lcd Affiche des informations sur un afficheur LCD. (nécessite lcdproc et pylcd)
usb Scanne des périphériques USB
usbstorage Gère les périphériques de stockage USB
image.gphoto Gère les appareils photos avec gphoto
video.linkbrowser Permet de lire des vidéos sur Internet

Ces greffons sont compris dans la liste retournée par les commandes freevo plugins -l et freevo plugins -a.

Des greffons supplémentaires peuvent également être téléchargés sur http://freevo.sourceforge.net/addons/.

Sébastien Munch,

yeiazel@yeiazel.net