NOTE: Cet article a été publié dans le magazine "Login:" (site web: www.loginmag.com) daté de Septembre 2002. Il est reproduit ici avec l'aimable permission de ce magazine.

VDR - DivX, (S)VCD et DVD

Voyons ce mois-ci comment comment VDR intègre la lecture de DVD, la lecture  / création de (S)VCD et DivX.

Pierre angulaire de la lecture multi-formats sous VDR, MPlayer (www.mplayerhq.hu/homepage/) est capable de lire quasiment tous les formats audio/vidéo. Pour notre plus grand bonheur, les auteurs ont ajouté le support des cartes DVB en tant que périphérique de sortie. Grâce au patch qui intègre l'appel de Mplayer au sein de VDR, vous avez entre vos mains le player audio/vidéo ultime ! Bien que MPlayer supporte en natif un grand nombre de formats, nous savons tous que de nouveaux s'ajoutent à un rythme soutenu. Le génie des auteurs de MPlayer est d'avoir intégré le support du décodage via les DLL du monde Windows. Il est ainsi très facile de coller à l'actualité des codecs ! Nous avons inclus un pack sur le CD du mois contenant la plupart de ces DLL. Avant d'installer MPlayer et pour que celui-ci puisse en profiter, installons les codecs DivX (rappelons que tout ceci est sur le CD du mois):

cd /usr/local/src
tar -xzvf divx4linux-20011025.tgz
cd divx4linux-20011025
./install.sh

et MP3 :

cd /usr/local/src
tar -xzvf lame-3.92.tar.gz
cd lame-3.92
./configure
make
make install
Et enfin, MPlayer :
cd /usr/local/src
tar -xIvf MPlayer-0.90pre3.tar.bz2
cd MPlayer-0.90pre3
./configure --enable-dvb
./configure --with-extraincdir=/usr/local/src/DVB/ost/include
make
make install

L'installation du patch MPlayer pour VDR a déjà été faite le mois dernier. Si l'option "MPLAYER=1" n'était pas positionnée dans le fichier makevdr, rajoutez-la, et re-compilez VDR.

Lire les DivX

MPlayer est appelé depuis CDR via un script shell "mplayer.sh". Un fichier "mplayer.sh.example" est fourni mais n'est plus optimum avec les dernières versions de MPlayer. Remplacez-le par le listing suivant et placez mplayer.sh dans /video:

#!/bin/bash
mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale $1
Vous pouvez ainsi rejouer tous les fichiers reconnus par MPlayer sur la sortie vidéo et son de votre carte DVB. Notez la valeur "576" qui correspond à la résolution verticale de l'image en sortie. Utilisez 288 ou 576 pour les vidéos PAL (25 images par secondes), ou 240 ou 480 pour les vidéos NTSC (29,997 ou 30 images par seconde).
Reste à modifier le script "runvdr" utilisé pour lancer VDR afin d'indiquer où se trouve le script mplayer.sh. Rajoutez l'option "-M /video/mplayer.sh" à cet effet.
Une fois que VDR est lancé, allez dans Menu/MPlayer et choisissez le fichier audio/vidéo à rejouer.

Lecture d'un DivX
Lecture d'un DivX

Commander MPlayer grâce à la télécommande

Lorsque MPlayer est lancé, les touches de la télécommande configurées pour VDR via LIRC ne sont plus effectives. Voici à quoi ressemble le fichier /video/mplayer_lircd.conf:

  begin
   prog = mplayer
   button = MENU
   config = osd
   repeat = 0
  end

  begin
   prog = mplayer
   button = BACK
   config = quit
   repeat = 0
  end

Les entrées "button" doivent correspondre aux touches de la télécommande définies dans le fichier /etc/lircd.conf. Les entrées "config" correspondent aux commandes de MPlayer, dont voici la liste: seek +/- x, pause, osd, quit, volume +/- x. L'entrée "repeat" indique si la touche peut être répétée ou non. Par exemple, les commandes seek et volume doivent avoir "repeat=1". Un exemple de ce fichier est disponible sur le CD du mois. Afin de prendre en compte tout ceci, rajoutez l'option "-lircconf /video/mplayer_lircd.conf"dans le script /video/mplayer.sh.

Script de montage/démontage

l ne s'agit pas ici de jouer aux legos, mais bien d'indiquer à VDR un shell script à utiliser pour monter/démonter les sources où peuvent se trouver vos fichiers lisibles par MPlayer  : mpeg, DivX ou autres.
Encore une fois, un fichier exemple (mount.sh.example) est fourni. Copiez-le en tant que /video/mount.sh. Pour indiquer à VDR qu'il doit utiliser ce script, rajoutez l'option "-o /video/mount.sh".

Montage/Démontage d'une source VDR
Montage/Démontage d'une source VDR

Créer des DivX

Il existe deux possibilités pour créer des DivX à partir de VDR. La première consiste à enregistrer directement en DivX. Plutôt que d'enregistrer le flux DVB dans un fichier vdr, celui-ci est directement redirigé (pipe) vers mencoder (fourni avec MPlayer). Ce patch est fourni avec AIO et il suffit de modifier le fichier "makevdr" en rajoutant "DIVX=1" et recompiler vdr (./makevdr) pour rajouter la fonctionnalité. Reste à aller dans "Menu/Configuration" et à choisir les options d'enregistrement en DivX. Bien sûr, tout ceci étant en temps réel, il vous faudra trouver un compromis entre résolution/qualité d'encodage et puissance de votre processeur. A titre d'exemple, l'auteur du patch utilise un Athlon 850Mhz et encode en 268*200.
La deuxième possibilité (ma favorite) passe par l'utilisation d'un script "vdr2divx" qui permet de faire l'encodage après que le fichier vdr ait été créé, ce qui lève le problème de la puissance CPU. Ce script peut être lancé après le montage d'un enregistrement (voir article du mois précédent). Ainsi, la création d'un DivX sous VDR peut se résumer à "j'enregistre l'émission, j'édite l'enregistrement en coupant les parties dont je ne veux pas et j'attends d'avoir mon DivX", et tout ceci à la télécommande  ! Installez le script vdr2divx de la façon suivante :

cd /usr/local/src
mkdir vdr2divx
tar -xzvf 2divx153.tar.gz -C vdr2divx
cd vdr2divx
./setup
Répondez aux différentes question du script d'installation (vous pourrez modifier ces paramètres en éditant le fichier 2divx.conf). Puis modifiez "runvdr" en ajoutant "-r /usr/local/src/vdr2divx/nq.sh" à l'appel de VDR. nq.sh sera alors appelé à chaque fois qu'une opération de montage sera terminée.
Un autre script se charge de surveiller qu'un DivX attend d'être encodé. Modifiez "runvdr" pour le lancer avec VDR  :

cd /usr/local/vdr2divx; ./wait2enc.sh &

Lire les DVD

La lecture de DVD sous VDR est apportée par un patch dont l'installation est assez longue. Toute l'aide nécessaire est disponible ici  : http://www.mdlug.de/index.php/projekte/vdrdvd.inc, ainsi que sur le CD du mois dans le fichier CSS.README.
Une fois fait, modifiez le fichier "makevdr" en rajoutant "DVD=1" et recompilez vdr (./makevdr). Ce patch demande qu'un périphérique /dev/dvd existe. Si ce n'est pas le cas, mais que vous avez bien un lecteur de DVD d'installé, créez le périphérique avec un lien symbolique (dans notre exemple, le lecteur de DVD est /dev/hdc)  :

ln -s /dev/hdc /dev/dvd

Touches pour lecture d'un DVD
Touches pour lecture d'un DVD

Lire et créer des (S)VCD

Il est possible de lire les VCD et SVCD avec VDR. Pour cela, modifiez le fichier "makevdr" en rajoutant "VCD=1" et recompilez vdr.
Le format SVCD est de plus en plus populaire car les SVCD sont lisibles dans la plupart des platines DVD de salon. La création de SVCD à partir des enregistrements VDR peut être entièrement automatisée grâce au script "tosvcd" qui prend en entrée les enregistrements VDR et délivre en sortie les images CD prêtes à être gravées par un utilitaire comme cdrdao. Il est ainsi possible de transformer un film diffusé sur satellite ou câble en SVCD, et ce avec une qualité optimum puisque aucune conversion numérique/analogique n'intervient dans la chaîne.
"tosvcd" dispose de fonctions très intéressantes, comme le choix du nombre de CD à utiliser (qui influe directement sur la qualité) et le calcul de l'heure de fin de l'encodage.
Pour installer tosvcd, il faut d'abord installer les utilitaires mpeg2enc, yuvdenoise, yuvscaler et mplex disponibles sur http://mjpeg.sourceforge.net/ ainsi que vcdimager, disponible sur http://www.vcdimager.org et et sur le CD du mois.

rpm -ivh --nodeps mjpegtools-1.6.0-1.i386.rpm
rpm -ivh vcdimager-0.7.12-1.i386.rpm
Puis installer tosvcd lui-même:

tar -xIvf tosvcd-0.7.tar.bz2
cd tosvcd-0.7
make
make install
Pour créer un SVCD à partir d'un enregistrement VDR, placez-vous dans un répertoire qui pourra contenir les images des SVCD et lancez la commande  :

tosvcd /video/EnregistrementAConvertir/2002-11-01.10:12.10.11.rec
Si tout se passe bien, vous obtiendrez les images prêtes à être gravées sur CD.

Touches pour lecture d'un SVCD
Touches pour lecture d'un SVCD