Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Ève

Faire des DVD à partir de fichiers vidéo

Première rédaction de cet article le 27 février 2008


Aujourd'hui où on peut récupérer plein de fichiers vidéos sur Internet ou bien via sa LibreBoîte, il est courant de les regarder sur son ordinateur. Mais le lecteur de DVD traditionnel a encore des avantages (prix, disponibilité, facilités pour regarder en famille) et il est donc intéressant de pouvoir produire des DVD-Vidéo à partir de ces fichiers vidéo. Disons-le franchement, ce n'est pas facile mais c'est possible. Ici, j'utiliserai une machine Unix, en l'occurrence une Ubuntu.

On trouve beaucoup de documentations et de HOWTO sur le réseau pour cette tâche. La plupart sont très complexes et supposent que l'utilisateur est prêt à concevoir et à écrire des commandes comme mencoder -o $OUTPUT -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd -vf harddup -srate 48000 -ofps 25 -lavcopts acodec=ac3:abitrate=192:vcodec=mpeg2video:aspect=4/3:keyint=15:vrc_buf_size=183 5:vrc_maxrate=9800:vbitrate=$BITRATE:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=1:lmin=1:dc=10 $INPUT. D'autres documentations supposent au contraire qu'on veut utiliser un outil à GUI qui va tout faire pour nous, sans nous dire comment. Je me situe entre les deux : je veux quelque chose de simple (je ne suis pas professionnel de la vidéo) mais je veux aussi quelque chose en ligne de commande, qu'on puisse adapter et programmer.

Avant de voir la solution que j'utilise, expliquons un peu les étapes. Il faut faire quatre choses pour avoir un DVD-Vidéo :

  • Encoder la vidéo selon un encodage que comprend une platine DVD ordinaire, typiquement MPEG-2 (à noter que ces platines évoluent, les plus récentes connaissent de nouveaux formats),
  • Fabriquer un menu pour le lecteur de DVD,
  • Fabriquer une structure de fichiers conforme à ce qu'attend le lecteur (format UDF, répertoires standard VIDEO_TS et AUDIO_TS),
  • Graver le tout avec un graveur de DVD.

Chacune de ces étapes peut être faite à la main, avec une commande Unix, mais la création de ces commandes est souvent cauchemardesque. C'est pour cela que je préfère utiliser les scripts du paquetage ToVid, simples et particulièrement bien documentés. Prenons le cas d'un film nommé « Parle à ma main » qu'on a récupéré en AVI et qu'on voudrait mettre sur DVD. Les quatre étapes citées ci-dessus correspondent à trois commandes de ToVid (la dernière commande fait deux étapes) :

# Ré-encoder le fichier. Le résultat sera bien plus gros, car les
# algorithmes de compression que comprennent les lecteurs DVD de salon
# ne sont pas aussi efficaces.
tovid -dvd -in parle-a-ma-main.avi -out parle-a-ma-main

# Créer le menu du DVD 
makexml /var/tmp/parle-a-ma-main.mpg -out parle-a-ma-main

# Créer le système de fichiers UDF et graver (makedvd appelle
# genisoimage pour cela)
makedvd -burn parle-a-ma-main.xml

Et c'est tout et ça fonctionne. Il n'y a pas de vrai menu, puisqu'un seul film est présent, ToVid crée un DVD qui démarre automatiquement sur l'unique film.

Et si on a plusieurs films et qu'on veut des menus ? Supposons qu'on a escaladé deux montagnes en Antarctique, l'Erebus et le Kirkpatrick. Pendant l'ascension, on a filmé et enregistré erebus.avi et kirpatrick.avi. On veut faire un menu présentant le choix entre les deux films :

# Réencoder les deux fichiers
tovid -dvd -in erebus.avi -out erebus
tovid -dvd -in kirkpatrick.avi -out kirkpatrick

# Faire le menu
makemenu -pal "Mont Erebus" "Mont Kirkpatrick" -out Antarctique

# Générer le fichier XML qui décrit le DVD
makexml -dvd -menu Antarctique.mpg erebus.mpg kirkpatrick.mpg -out Antarctique

# Graver
makedvd  -burn Antarctique.xml

Cela donnera un DVD avec un menu d'introduction proposant les deux choix « Mont Erebus » et « Mont Kirkpatrick ». makemenu dispose de nombreuses options (très bien expliquées). Par exemple, ici, on mettra vent.mp3 en musique de fond du menu et neige.jpg en image de fond.

 makemenu -pal "Mont Erebus" "Mont Kirkpatrick" -audio vent.mp3 \
          -background neige.jpg -fontsize 38 -out Antarctique

La première étape, celle du réencodage n'est pas forcément nécessaire si le lecteur de DVD sait lire le format utilisé. Attention, les formats vidéo sont typiquement en deux couches, un encodage des données vidéo et un emballage de la vidéo et d'autres informations dans un container. Par exemple, un AVI est un container, les données étant en général encodées en MPEG. Le script MediaInfo permet d'afficher le contenu d'un fichier multimédia, ici l'AVI contient une vidéo MPEG-4 et une piste audio :

% MediaInfo monfilm.avi
General #0
Complete name        : /tmp/monfilm.avi
Format               : AVI
Format/Info          : Audio Video Interleave
Format/Family        : RIFF
File size            : 5.76 MiB
PlayTime             : 1mn 47s
Bit rate             : 444 Kbps
StreamSize           : 176 KiB
Writing library      : VirtualDub build 24415/release

Video #0
Codec                : XviD
Codec/Family         : MPEG-4
Codec/Info           : XviD project
Codec settings/Packe : Yes
Codec settings/BVOP  : Yes
Codec settings/QPel  : No
Codec settings/GMC   : 0
Codec settings/Matri : Default
PlayTime             : 1mn 47s
Bit rate             : 313 Kbps
Width                : 576 pixels
Height               : 336 pixels
Aspect ratio         : 16/9
Frame rate           : 25.000 fps
Resolution           : 8 bits
Chroma               : 4:2:0
Interlacement        : Progressive
Bits/(Pixel*Frame)   : 0.063
StreamSize           : 3.99 MiB
Writing library      : XviD0041

Audio #0
Codec                : MPEG-1 Audio layer 3
Codec profile        : Joint stereo
PlayTime             : 1mn 47s
Bit rate             : 125 Kbps
Bit rate mode        : VBR
Channel(s)           : 2 channels
Sampling rate        : 48 KHz
Resolution           : 16 bits
StreamSize           : 1.59 MiB
Writing library      : Xing (new)

(mplayer -identify donne également des informations mais moins détaillées et semble difficile à utiliser de manière non-interactive.)

L'étape de la gravure est souvent la plus délicate (je n'ai jamais réussi à relire un DVD gravé avec wodim, par exemple.). Les erreurs à la gravure sont fréquentes, surtout avec les DVD bas de gamme. Il est recommandé d'utiliser des DVD RW (réinscriptibles), certes plus chers mais qui permettent de réessayer plusieurs fois. On peut aussi, avant la gravure, tester le DVD « virtuel » avec gxine ou codeine.

Une autre description de la même technique peut être trouvée (en anglais) dans DVD Authoring with Linux qui note, comme moi, que la méthode manuelle est vraiment pénible. Si on préfère quand même procéder à la main, et écrire un script à soi, on trouvera des informations utiles en français dans MPEG to DVD ou en anglais dans Some thoughts on DVD authoring ou Authoring PC media To DVD using the Linux Operating System.

On notera que le monde de la vidéo est particulièrement difficile pour les partisans du logiciel libre. Certains programmes ne sont pas accessibles sous une licence libre, d'autres sont sous l'épée de Damoclès des brevets logiciels, fréquents sur les formats vidéo (peu sont des formats vraiment ouverts). C'est ainsi que la documentation de ToVid note, à propos de l'installation sur Debian, que tovid isn't in the official Debian distribution because it depends on packages that don't comply with the Debian philosophy (and so it's very likely it never will be officially included in Debian) (les commandes utilisées ici ont été testées sur une Ubuntu, avec les jeux de paquetages universe et multiverse dont le statut n'est pas toujours clair).

Merci à Jean-Philippe Pick et à Emmanuel Chantreau pour m'avoir guidé dans mes débuts dans le monde merveilleux et hostile de la vidéo numérique.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)