Retrouvez cet article dans : Linux Magazine 81
Une vidéo du petit dernier, des photos de vacances, un film publicitaire ou une présentation commerciale ? Gravez un DVD que vous pourrez relire sur votre lecteur de salon.
Un DVD est, du point de vue extérieur, un support sur lequel vous pouvez placer de la vidéo, du son, des sous-titres et des menus. Dans le cadre de cet article, nous allons nous attarder sur plusieurs cas pratiques. En effet, lorsque vous disposez de vidéos, de bandes son (en général de vidéos avec la bande son intégrée) ou de photos, il est très commode de les placer sur un DVD que vous pouvez amener chez la grand-mère à qui vous venez d’offrir un lecteur DVD de salon et qui ne savait que faire de ce bel objet brillant plein de nouvelles technologies sans galette à lui donner à manger.
Acquisition de la vidéo
Ce sujet est très vaste. Vous pouvez obtenir une vidéo par internet, comme vous pouvez la générer à partir d’images de synthèse, comme vous pouvez encore l’acquérir depuis votre caméscope. Dans un paragraphe suivant, nous verrons même comment générer simplement une vidéo à partir de photos. À part cet exemple précis, nous n’aborderons pas ce sujet et nous contenterons d’une réflexion sur la résolution des vidéos, qui sert à ceux qui numérisent des vidéos, mais aussi plus loin lors du calcul de la taille de l’image d’un menu.
Une vidéo, pour tenir sur un DVD, doit respecter quelques contraintes de format. Une de ces contraintes est les dimensions de l’image, qui sont de 720x576 pour une vidéo destinée à un lecteur PAL. D’autres dimensions sont possibles, comme le 704x576, mais vous ne pouvez pas choisir les dimensions qui vous arrangent. Par ailleurs, les pixels d’une télévision, contrairement à ceux d’un écran d’ordinateur, ne sont pas carrés. Autant il semble évident que les pixels n’ont pas une forme ovale ou triangulaire, autant il paraît surprenant, lorsque vous l’apprenez, que ces pixels sont rectangulaires. Et pour couronner le tout, lorsque vous réalisez une acquisition de vidéo depuis un caméscope DV, vous obtenez bien une image de 720x576, ce qui correspond à un format 5/4 et non à un format 4/3 comme votre télévision sait l’afficher. La taille en hauteur est respectée sur la télévision et donc, les bords à droite et à gauche sont rognés. Que faire ?
La première chose à faire, c’est comprendre, et ce n’est pas simple au premier abord. Nous allons commencer par la télévision. Un poste standard, vendu comme télévision 4/3, se caractérise par une résolution qui correspond à 702x576 pixels, et des pixels rectangulaires d’un rapport 59/54. Le rapport 4/3 s’obtient ainsi : (702 * 59/54) / 576. Nous retrouverons ces chiffres plus loin dans l’article et vous savez maintenant d’où ils viennent.
Ceux qui numérisent des vidéos obtiennent des vidéos de 720x576 pixels. Si vous passez le résultat tel quel sur un poste de télévision, vous perdez 18 pixels. L’idée serait de redimensionner l’image en lui ajoutant au préalable des bandes noires, afin d’obtenir à la fois un rapport correct et des dimensions autorisées par le format DVD. Il s’agit donc de passer d’une largeur de 720 pixels carrés à une largeur de 702 pixels rectangulaires. Pour cela, une première étape consiste à connaître le rapport longueur/largeur de l’image numérique afin de le conserver : 720/576 = 5/4. Comme nous souhaitons une image de 702 pixels de large, sa hauteur sera de 702/(5/4), soit 562. La différence est de 14 pixels en hauteur. Le pourcentage de réduction est alors de 97.5%.
Le principe consisterait alors à réduire l’image, en lui mettant des bandes noires à droite et à gauche, et par effet de bord en haut et en bas, ce qui donne par ailleurs un effet 16/9. Avant de conclure que vous pouvez utiliser Transcode avec les options qui vont bien (-j, -B...), essayez de faire la transformation sur une image seule avec votre outil de traitement d’image favori (Gimp, ImageMagick...). Une réduction de 97,5% devrait donner un résultat de qualité très décevante.
Par ailleurs, si malheureusement le lecteur DVD de salon et sa télévision coupent les bords, ô surprise, lorsqu’on passe ce même DVD sur l’ordinateur, l’image est affichée sans être tronquée (tests de lectures effectués avec xine et vlc sur Linux, ainsi qu’avec le lecteur Apple et vlc sur MacOSX). Alors, si vous savez faire une croix sur ces bandes latérales qui ne s’affichent pas dans le salon, sachez qu’elles ne sont perdues que pour votre télévision.
Transcode : une vidéo simple
Nous allons réaliser ici un DVD le plus simple qui soit. Il ne contient qu’une vidéo, qui est jouée dès l’insertion dans le lecteur, sans menus ni tralala. Pour cela, nos outils seront :
- Transcode ;
- Les mjpegtools ;
- Dvdauthor.
Ce dernier attend une vidéo au format MPEG. Vous pouvez la lui fournir après quelques clics de souris dans l’application kino, mais nous allons voir comment créer ce fichier, que nous nommerons film.mpeg, avec Transcode.
Transcode, connu comme le couteau suisse de la vidéo, est un outil qui prend une vidéo en entrée, lui applique diverses transformations (travail sur les couleurs, redimensionnements avec -Z, -j, -B et d’autres options...) et exporte le résultat dans un ou plusieurs fichiers.
Les options d’entrée
Peu d’options d’entrée nous intéressent ici. Nous n’allons utiliser que l’option -i <fichier> qui sert à indiquer la vidéo sur laquelle travailler. Le format de cette vidéo est normalement détecté par Transcode qui fera appel au décodeur adéquat. Les possesseurs de vidéos au format DV seront néanmoins peut-être intéressés sur l’option -x qui permet de forcer ce décodeur. En effet, sans cette option, Transcode choisit d’utiliser libdv, ce qui se révèle manifestement être un mauvais choix chez ceux pour qui le résultat est la célèbre et décourageante ligne Segmentation fault, parfois accompagnée de l’information suivante (core dumped) pour indiquer aux non-programmeurs qu’ils ont un fichier core à éradiquer à coup de commande rm ! Pour ces malheureux utilisateurs, tournez-vous vers le codec ffmpeg en indiquant -x ffmpeg et le tour est joué.
Les options de transformation
Ceux qui se sont intéressés au redimensionnement de la vidéo dans un paragraphe précédent peuvent indiquer ici ces options. Le site de Transcode en indique la liste, ainsi que l’ordre dans lequel ils agissent : -j -I -X -B -Z -Y -r -z -l -k -K -G -C. Vous retrouvez ici les options -j pour ajouter des bandes noires puis -B pour redimensionner.
C’est ici aussi que vous pouvez redimensionner une vidéo 4/3 en une vidéo 16/9 en supprimant les bandes noires. Une vidéo de dimensions 720x576 devrait prendre de nouvelles dimensions 720x432. Vous supprimez les bandes noires avec -j 72,0,72,0. N’oubliez pas dans ce cas l’option de sortie --export_asr 3 pour indiquer que vous souhaitez un ratio 16/9.
Inversement, si vous disposez d’une vidéo au format 16/9, vous pouvez vouloir lui ajouter des bandes noires et lui donner un ratio d’aspect 4/3. Vous pouvez vous en sortir avec -j et des valeurs négatives, mais il est beaucoup plus simple d’utiliser l’option --keep_asr couplée avec -Z 720x576 qui effectue les calculs de dimension pour vous. Vous ne manquerez pas dans ce cas l’option de sortie --export_asr 2 pour indiquer le format 4/3.
Les options de sortie
Pour un DVD, le format de sortie doit être du MPEG. Vous pouvez alors choisir entre ffmpeg et les mjpegtools pour exporter dans ce format. Le premier a l’avantage de la vitesse d’exécution et les seconds celui de la qualité. Réaliser un film n’étant pas une opération courante, nous estimons qu’avec Transcode (lancé avec screen pour ceux qui connaissent), nous pouvons nous permettre de payer le prix de la qualité en attendant un peu plus. Nous indiquons donc, en codec de sortie, l’option suivante -y mpeg2enc, mp2enc. Ceux qui préfèrent ffmpeg auront mis -y ffmpeg.
Que vous utilisiez ffmpeg, les mjpegtools ou un autre codec, vous pouvez avoir besoin de leur indiquer des options, ce que vous faites avec l’option -F. Pour mpeg2enc, voici ce que cela donne : -F 8,’-v 0 -S 4400 -a 2 -K kvcd -q 2’. Déchiffrons un peu ces nouvelles options de mpeg2enc. Le premier 8 signifie que vous voulez sortir du MPEG pour un DVD. Avec d’autres valeurs, vous pouvez obtenir un VCD, un SVCD, voire simplement du mpeg générique. Les autres options sont celles de mpeg2enc :
- -v 0 : verbosité nulle.
- -S 4400 : taille des séquences individuelles. Nous utilisons cette valeur plus loin avec mplex.
- -a 2 : aspect 4/3. Indiquez 3 pour du 16/9.
- -K kvcd : matrice de quantisation.
- -q 2 : niveau de quantisation ; les valeurs basses entraînent une meilleure qualité et le débit binaire (bitrate) est meilleur pour les valeurs élevées.
La ligne de commande complète est, pour un film issu d’un fichier DV :
INPUT=votre_film.dv
OUTPUT=le_film
transcode -a 0 -i ${INPUT} -w 9500 -b 224 \
--encode_fields b \
--export_asr 2 \
-u 10,2 -I 5 \
-F 8,’-v 0 -S 4400 -a 2 -K kvcd -q 2 -N 1’ \
-y mpeg2enc,mp2enc -o ${OUTPUT} \
--print_status 100
Si vous effectuez des recherches sur internet, chacun utilise ses propres options et, au final, il est rare d’avoir un résultat d’une qualité largement meilleure avec telle ou telle option. D’ailleurs, cela se saurait ! Donc faites vos tests...
mplex : mixez la vidéo et l’audio
Transcode, utilisé pour convertir un film au format MPEG, génère deux fichiers, un pour la vidéo (d’extension .m2v) et un pour l’audio (d’extension .mpa). Pour obtenir un seul fichier contenant les deux, vous pouvez utiliser mplex. Voici une ligne de commande typique :
OUTPUT=le_film
mplex -v 1 -f 8 -S 4400 -o ${OUTPUT}.mpeg ${OUTPUT}.m2v ${OUTPUT}.mpa
Vous pouvez reconnaître les options ici, avec -v 1 qui fixe la verbosité, -f 8 qui indique comme plus haut un format DVD et -S 4400 le débit binaire. La suite des options n’est autre que le fichier de sortie, suivi des fichiers à mixer.
dvdauthor : la structure d’un DVD
Pour réaliser notre DVD, nous allons utiliser dvdauthor. Ce logiciel a une syntaxe très simple lorsque vous lui fournissez toutes les informations dont il a besoin dans un fichier XML. C’est ce que nous allons faire ici : dvdauthor -o monDVD -x simple.xml. Avant de lancer la commande, assurez-vous que le répertoire monDVD/ existe, car c’est à cet endroit que dvdauthor va écrire le DVD. Il ne vous restera ensuite plus qu’à lire le DVD avec xine dvd:/chemin/vers/monDVD/VIDEO_TS/ ou à le graver avec une commande comme celle qu’utilise l’auteur : growisofs -d /dev/sr0 -A «mon film» DVD.
Le fichier simple.xml est le suivant :
<dvdauthor>
<vmgm />
<titleset>
<titles>
<pgc>
<vob file=»film.mpeg» />
</pgc>
</titles>
</titleset>
</dvdauthor>
À la lecture de ce fichier, vous comprenez sans difficulté que notre vidéo doit être au format MPEG dans un fichier film.mpeg. Mais que signifie le reste ?
Un DVD est composé de menus et de ce qu’on appelle des titres. Nous verrons les menus plus loin dans l’article et allons nous concentrer sur les titres. La structure d’un DVD est reflétée par celle du fichier de configuration de dvdauthor. Il existe un VMGM (Vidéo ManaGer Menu) qui contient ce qui est joué à l’insertion du DVD (la pub, les avertissements de copyright, le menu principal...), suivi de titlesets. L’intérêt d’un titleset est de disposer des mêmes paramètres (menu, langue, sous-titres et angle) dans tout celui-ci. Inversement, les titlesets sont prévus pour être indépendants les uns des autres. Chaque titleset contient un ou des menus et un ou des titles. Chaque menu et chaque title peut ensuite contenir un ou plusieurs items (PGC : ProGram Chain), menu ou vidéo en fonction.
Dans notre exemple, nous avons donc un VMGM vide, ce qui nous fait sauter directement au premier titleset et, en l’absence de menu dans celui-ci, au premier PGC qui est notre film. C’est gagné : vous n’avez plus qu’à prendre votre film de test ou à transformer en mpeg une vidéo quelconque et, avec dvdauthor, vous générez votre premier DVD.
dvd-slideshow : les photos de vos vacances
Vous êtes-vous déjà retrouvé chez vos parents ou chez des amis à vouloir leur montrer vos photos de vacances alors qu’ils n’ont pas d’ordinateur ou alors celui-ci plante lamentablement ou refuse de lire vos photos ? Ou encore chez vous, l’ordinateur n’est pas disponible car vous venez d’installer gentoo et il manque encore l’outil de diaporama (gqview, gthumb...) ? Quoi de plus sympathique que de proposer vos photos sur la télé grâce au lecteur DVD de salon ?
Il existe bien sûr plusieurs façons de faire. L’une, assez simple au premier abord, consiste à transformer chaque photo en une vidéo de quelques secondes et de faire pause automatiquement, pendant quelques secondes ou en attendant que vous appuyiez sur la bonne touche de la télécommande. Cette façon de faire pose plusieurs problèmes. En effet, le nombre de PGC dans un titleset est limité.
Vous devrez ruser en utilisant plusieurs titlesets pour vous en sortir. Mais cela n’est pas fini. En effet, si vous choisissez une pause infinie pour chaque image vous devrez appuyer autant de fois sur la télécommande. À l’usage, c’est ennuyeux, cela use la pile et n’a que le mérite de muscler l’un de vos doigts. Si vous préférez la pause de quelques secondes, le diaporama se lance, mais il est impossible de l’interrompre : pour chaque photo il est interrompu (par définition du mode pause) et vous ne pouvez pas interrompre quelque chose qui l’est déjà. Cela ne l’empêche pas de reprendre quelques secondes après. Ceci est une fonctionnalité du DVD qui est plutôt gênante ici.
Nous allons préférer une autre solution : transformer chacune de nos photos en une vidéo de quelques secondes (7 pour notre exemple) et concaténer toutes ces vidéos en une seule. Ainsi, lorsque le diaporama est lancé, vous l’interrompez avec la touche de pause, le relancez normalement, et vous pouvez faire de l’accélération rapide ou du retour rapide comme pour tout film, puisqu’il va s’agir d’un film.
Pour nous faciliter la tâche, l’outil dvd-slideshow nous propose cela tout cuit. Il n’y a qu’un fichier à éditer pour y mettre la liste de nos photos ainsi que quelques paramètres supplémentaires (le temps pour chaque photo par exemple).
Remarque :
Les utilisateurs d’Ubuntu 5.10 et peut-être d’autres distributions ont une version des mjpegtools trop récente par rapport à dvd-slideshow. Cela se manifeste par une erreur mpeg2enc could not read YUV4MPEG2 header : Stream requires unsupported features. Vous pouvez corriger cela en éditant le script /usr/bin/dvd-slideshow et en ajoutant l’option -S 420mpeg2 à ppmtoy4m à chaque fois que celui-ci est appelé.
Le fichier de paramètres de dvd-slideshow contient des lignes de la syntaxe suivante :
[image.jpg|mot-clé]:durée:sous-titre:effet:params_de_l’effet
Les mots-clés permettent d’indiquer un titre, par exemple le lieu de vos vacances et la date. Vous pouvez aussi indiquer un fond d’écran avec background, ou entre deux photos, indiquer un effet de fade-in (fade-in) fade-out (fade-out) ou de fondu enchaîné (crossfade). Comme vous commencerez probablement par quelque chose de simple, vous vous contenterez d’indiquer la liste de vos images ainsi que la durée :
vacances.txt
DSC_0001.JPG:7 DSC_0002.JPG:7 DSC_0005.JPG:10:la maison DSC_0006.JPG:8:le chien
Ce film va présenter quatre photos et va durer 32 secondes. Les deux dernières contiendront des sous-titres. Nous n’ajoutons aucun effet, mais vous ne manquerez pas d’ajouter par la suite un titre au début, et au moins un fade-out à la fin.
Pour réaliser le film, il ne reste plus qu’à lancer ceci :
mkdir diaporama dvd-slideshow -o diaporama -n Vacances -f vacances.txt -p
Le résultat, si tout fonctionne bien, sera dans le répertoire diaporama/, à savoir un fichier diaporama.mpg qui est notre film, un autre Vacances.xml contenant l’indexation dans un format directement exploitable par dvdauthor, et un fichier de journalisation. Le fichier Vacances.xml est très intéressant car vous pouvez reprendre notre fichier pour dvdauthor plus haut et remplacer la ligne contenant le tag <vob> par celle de Vacances.xml. Nous effectuons cela d’ailleurs plus loin. Il ne vous reste plus qu’à lancer dvdauthor comme nous l’avons vu plus haut.
Ajoutez un menu
Cette partie est probablement la plus délicate. Il s’agit d’abord de comprendre ce qu’est un menu, puis de le réaliser.
Un menu n’est rien d’autre qu’une vidéo au format MPEG, avec des sous-titres un peu spéciaux (que vous placez où bon vous semble). À cela s’ajoutent des zones sensibles auxquelles sont associées des actions. Nous allons donc commencer par créer une image que nous transformerons en la vidéo d’une image fixe, et c’est elle qui nous servira de menu. Nous allons créer deux autres images, l’une pour montrer qu’un item est sélectionné (select) et l’autre pour indiquer que c’est l’option active (highlight). Avec spumux, nous ajouterons ces sous-titres à la vidéo. Il ne restera plus qu’à indiquer les actions dans le fichier de paramètres de dvdauthor.
Votre menu avec Gimp
Avec Gimp, vous allez créer une image de 720x576 pixels. Attention, la résolution est inhabituelle : choisissez 75dpi horizontalement et 80dpi verticalement. Vous pouvez dessiner comme vous voulez sur cette image, par exemple ajouter une des meilleures photos de vos vacances. Vous pouvez ensuite ajouter, sur cette même image, les boutons, à savoir leur texte.

Ensuite, nous choisissons de créer deux cadres pour chacun des boutons. Attention ! Les images contenant les cadres ont une palette de 4 couleurs seulement. Dans notre cas, cela n’est pas un problème. Nous n’utilisons qu’une couleur, celle du cadre. Pour chacune des images, les cadres auront une couleur différente, l’une pour indiquer qu’ils sont sélectionnés et l’autre, actifs. Lorsque vous naviguerez sur le menu du DVD par la suite, ces cadres changeront de couleur en fonction de ce que vous voulez faire. Pour rappel, un cadre se dessine très facilement avec Gimp. Effectuez une sélection. Puis, dans le menu édition, choisissez Tracé... Les options par défaut conviennent, mais vous pouvez les faire varier à votre convenance.

À cet endroit, il convient d’effectuer une sauvegarde de l’image au format xcf, le format natif de Gimp. En cas d’erreur ou de retouche, cette sauvegarde est en sorte un point de contrôle. Vous allez ensuite ne laisser visible que le calque du fond, cachant ainsi les cadres. Sauvegardez cette nouvelle image au format ppm. Les formats habituels png ou jpg sont possibles, mais il vous faudra alors convertir l’image en ppm avec des outils tels que convert de la suite ImageMagick.

Maintenant, cachez (ou supprimez) le calque que vous venez de sauvegarder et faites apparaître le calque highlight par exemple. Pour fonctionner, cette image doit être convertie en une image de 4 couleurs maximum. Cela ne nous dérange pas vu que notre cadre n’utilise qu’une seule couleur. Pour cela, dans le menu Image, choisissez Mode puis Couleurs indexées. Gardez Générez une palette optimale, mais changez le nombre de couleurs pour 4.

Sauvegardez maintenant l’image au format PNG, par exemple menu_highlight.png. Vous pouvez répéter cette étape pour générer l’image menu_select.png. Vous vous retrouvez donc maintenant avec les trois fichiers suivants :
menu_background.ppm menu_highlight.png menu_select.png
Création de la vidéo du menu
La vidéo du menu s’effectue en répétant notre image menu_background.ppm une cinquantaine de fois. L’outil ppmtoy4m effectue cela avec les options -n50 et -r. Les autres options modifient le format pour obtenir du PAL ou ont un trait à la qualité de l’image.
ppmtoy4m -n50 -F25:1 -A59:54 -I p -r -S 420mpeg2 \ menu_background.ppm | mpeg2enc -n p -f8 -b5000 -a2 -o menu.m2v
Le résultat de notre commande est donné sur la sortie standard. Nous en profitons pour l’injecter dans un tube branché à mpeg2enc dont nous nous sommes déjà servis plus haut, avec les options -n p pour un format PAL, -f8 que vous reconnaissez pour indiquer un format DVD, un débit binaire de 5000 kbps et un aspect 4/3 avec -a2.
Ceux qui souhaitent ajouter une bande sonore le peuvent en l’encodant par exemple avec mp2enc qui accepte du WAV en entrée. Comme la bande sonore est obligatoire, si vous préférez un menu silencieux, voici comment générer quelques secondes de silence :
$ ffmpeg -ab 224 -ar 48000 -ac 2 -t 5 menu_audio.ac3
La ligne suivante que vous connaissez maintenant mixe l’audio et la vidéo pour générer un menu.mpeg qui n’est pas encore notre vidéo finale du menu.
$ mplex -f 8 -o menu.mpeg menu.m2v menu_audio.ac3
Création des sous-titres
Comme nous l’avons vu plus haut, pour créer notre menu interactif, nous allons utiliser l’outil de sous-titrage, spumux. Il nécessite une description de ce que nous voulons faire, que nous allons lui indiquer dans le fichier menu.spumux.xml :
<subpictures> <stream> <spu start=»00:00:00.0» end=»00:00:00.0» highlight=»menu_highlight.png» select=»menu_select.png» autooutline=»infer» autoorder=»rows»/> </stream> </subpictures>
La lecture de ce fichier montre que nous allons plaquer les images highlight et select sur notre vidéo, dès le début. Le tag <autooutline> qui ne peut prendre comme valeur que infer indique que nous laissons spumux détecter les rectangles automatiquement. Vous pouvez ajouter le tag <outlinewidth> pour indiquer l’épaisseur maximale des rectangles. Avec cette méthode, il faut indiquer l’ordre des rectangles avec autoorder. Avec nos deux boutons, l’ordre importe peu. Si vous en mettez plus, vous préférerez peut-être les ordonner en ligne comme ici ou en colonne (columns).
Ajout des sous-titres à la vidéo
Vous pouvez maintenant envoyer le flux vidéo dans spumux, et vous obtenez le menu final en sortie :
$ spumux menu.spumux.xml < menu.mpeg > menu_final.mpeg
Certaines informations peuvent être intéressantes sur la sortie d’erreur :
[...] INFO: Autodetect 0 = 107x47-223x103 INFO: Autodetect 1 = 447x47-653x113 [...]
Vous pouvez lire ici les boutons détectés, leurs coordonnées et surtout, leur numéro. C’est ici que vous verrez si spumux a bien détecté tous vos boutons.
Les actions pour dvdauthor
Nous revenons maintenant à notre sujet initial et au fichier simple.xml. Nous allons le modifier afin d’avoir toujours un seul titleset, mais contenant maintenant un menu et une seconde vidéo, le diaporama.
Vous pouvez commencer par les vidéos, ce qui donne, en premier, le film, et en second, ce que vous aurez recopié du fichier diaporama/Vacances.xml généré par dvd-slideshow.
<dvdauthor>
<vmgm />
<titleset>
<titles>
<pgc>
<vob file=”le_film.mpeg” />
</pgc>
<pgc>
<vob chapters=»0,0:0:3.0,0:0:5.97,0:0:8.94,0:0:11.91[...]» file=»diaporama.vob» />
</pgc>
</titles>
</titleset>
</dvdauthor>
Nous pourrions ajouter le menu dans la partie VMGM. Mais comme le menu ne touche que le film et le diaporama qui se trouvent dans le même titleset, nous allons le mettre avec eux. Cela consiste en une nouvelle section menu contenant des button. Chaque button décrit une action. Dans notre cas, l’action est simple : jump title XX où XX est le numéro de la vidéo à lancer lorsque l’utilisateur choisit ce bouton. Vous indiquez aussi la vidéo du menu de façon habituelle avec le tag <vob> dont vous précisez l’attribut pause="inf". Voici notre fichier vacances.xml à fournir à dvdauthor :
<dvdauthor>
<vmgm />
<titleset>
<menus>
<pgc>
<button>jump title 1; </button>
<button>jump title 2; </button>
<vob file=”menu_final.mpg” pause=”inf” />
</pgc>
</menus>
<titles>
<pgc>
<vob file=”le_film.mpeg” />
<post>jump menu;</post>
<pgc>
</titles>
<titles>
</pgc>
<vob chapters=»0,0:0:3.0,0:0:5.97,0:0:8.94,0:0:11.91[...]» file=»diaporama.vob» />
<post>jump menu;</post>
</pgc>
</titles>
</titleset>
</dvdauthor>
Vous découvrez ici une nouvelle possibilité avec le tag <post> : il est possible d’effectuer des actions en fin de lecture d’une vidéo. Ici, nous revenons au menu. Le diaporama n’est donc pas enchaîné au film. De la même manière, il existe le tag <pre> pour les actions précédant la lecture d’une vidéo. Parmi les actions possibles, la plus intéressante est bien sûr celle de sauter à une autre section. C’est celle que nous utilisons partout ici. Les endroits où sauter sont décrits dans le manuel de dvdauthor auquel vous pouvez vous référer.
Cas pratique : un DVD de MP3
Vous disposez maintenant d’à peu près tout ce qu’il vous faut pour créer un DVD bourré à craquer de musique. Cependant, le format MP3 pose un problème à dvdauthor. Vous devrez donc convertir vos fichiers audio, mp3 comme ogg, en mp2, par exemple avec mp2enc. Nous allons néanmoins vous proposer quelques idées avant de laisser libre court à votre créativité.
Vous pouvez ensuite faire appel à dvd-slideshow pour réaliser votre DVD. Le format sera une variation sur le thème qui suit. Après chaque nom de fichier mp3 (ou ogg ou wav), vous indiquez le numéro de piste, qui est toujours le même. Les pistes audio servent plutôt pour les DVD multilingues. Quant à audio, c’est un mot-clé qui indique que le titre de la musique (titre, auteur et album) doit être affiché pendant la durée de la musique. Il évite d’indiquer un nombre de secondes à la place.
musique1.mp3:1 musictitle:audio::titre1:auteur1:album1 musique2.mp3:1 musictitle:audio::titre2:auteur2:album2 musique3.mp3:1 musictitle:audio::titre3:auteur3:album3 ...
Les programmeurs en Perl se régaleront probablement à la rédaction d’un script à base de MP3::info pour générer ce fichier. Vous lancez ensuite dvd-slideshow comme nous l’avons vu auparavant et vous obtenez un DVD à graver.
Remarque:
Certains fichiers mp3 peuvent être corrompus. Votre lecteur de mp3 favori arrive à corriger. Mais dvd-slideshow est plus sensible. Aussi, vous aurez peut-être intérêt à convertir votre mp3 en fichier wav ainsi : mpg321 -w musique.wav musique.mp3. Même si, avec lame --mp3input corrompu.mp3 repare.mp3 vous pouvez corriger les problèmes, évitez cette formule qui vous fera perdre un peu de qualité au passage.
Si vous préférez maîtriser la génération du DVD, vous pouvez générer une vidéo pour chaque titre. Pensez à écrire un script qui utilise par exemple ImageMagick pour automatiser la création de ces images si vous souhaitez indiquer le titre, l’auteur et l’album de chaque musique. À partir d’une image au format ppm, vous pouvez obtenir une vidéo ainsi :
cat image.ppm | ppmtoy4m -S 420mpeg2 -n 50 -r -A 59:54 \ -F 25:1 | mpeg2enc -v 0 -a 2 -f 8 -o video.m2v
Les options de ppmtoy4m sont maintenant faciles à comprendre : nous générons 50 images en répétant la dernière (la première puisqu’il n’y en a qu’une) au format PAL (options -A et -F). Le résultat est encodé au format mpeg/PAL/DVD.
Pour encoder une musique en mp2, commencez par la convertir en wav. Vous l’envoyez ensuite sur l’entrée standard de mp2enc. Cela donne :
cat musique.wav | mp2enc -v 1 -r 48000 -o musique.mp2 mpg321 -w - -s musique.mp3 | mp2enc -v 1 -r 48000 -o musique.mp2 ogg123 -d wav -f - musique.ogg | mp2enc -v 1 -r 48000 -o musique.mp2
Mixez ensuite audio et vidéo :
mplex -f 8 -v 1 -o video.mpeg video.m2v musique.mp2
Une fois que vous avez toutes vos pistes, répartissez-les dans le fichier de paramétrage de dvdauthor. Vous pouvez par exemple proposer un menu dans le VMGM pour choisir un album. Si vous répartissez ceux-ci dans les titleset, vous pouvez mettre un second menu pour choisir quel titre de l’album écouter ou une écoute complète de l’album.
Tout cela demande beaucoup plus de travail qu’avec dvd-slideshow, mais le résultat en vaudra probablement la peine ! Si vous créez un tel DVD avec de la musique libre dont la distribution est autorisée, pensez à nous envoyer une copie !
Conclusion
Cet article bien long vous aura donné un aperçu de la structure d’un DVD et comment mettre les mains dans le cambouis pour créer le vôtre tel que vous le souhaitez. La photo utilisée pour le menu correspond aux Gorges du Diable, où le fleuve se jette d’une hauteur de plus de 100 m, dans le magnifique site des chutes d’Iguaçu, à la frontière entre le Brésil et l’Argentine.
Liens :
- Création de DVD et menus : http://wiki.arslinux.com/DVD_Authoring_and_Backup
- Authoring PC media to DVD using the Linux operating system : http://mightylegends.zapto.org/dvd/dvdauthor_howto.php
- Howto author AVI->DVD with menus using Linux only : http://forums.gentoo.org/viewtopic.php?t=117709
- Transcode : http://www.transcoding.org
- Ffmpeg : http://ffmpeg.sourceforge.net/
- Mjpegtools : http://mjpeg.sourceforge.net/
- dvdauthor : http://sourceforge.net/projects/dvdauthor/
- dvd-slideshow : http://dvd-slideshow.sourceforge.net/
Retrouvez cet article dans : Linux Magazine 81

