Sauvegarder ses DVD vidéo avec FFmpeg.

À l’heure actuelle, tout s’échange sous forme de fichier, mais entre la période de la VHS et celle du tout fichier, il y a eu la période DVD vidéo. La sauvegarde de votre mariage, de votre anniversaire, de vos pires exploits sportifs, se faisaient sur ce support magique : le DVD vidéo. Celui-ci avait l’avantage de pouvoir être lu dans tous les salons, de se copier et d’être distribué facilement à votre famille, enchantée de compléter leurs propres collections. Le tas de DVD vidéo venait grossir celui de vos VHS de spectacle d’enfance et une fine couche de poussière se déposait chaque année permettant de garder une trace de la chronologie des événements.

Mais de nos jours, notre monde moderne offre la possibilité d’enregistrer nos vies sous formes de fichier, avec tous les types de format de résolutions, et tous les types de compression, de la plus pourrie à la plus regardable.

Nous sommes dans l’aire du fichier pour le pire ou pour le meilleur. Voici donc comment faire transiter vos vielles histoires du support DVD vidéo au monde du fichier.

  1. Choisir les éléments à sauvegarder :

    Première étape, lister le contenu utile du DVD :

    Pour cela il suffit de scruter le contenu du dossier VIDEO_TS et de trouver les fichiers .VOB qui vous intéresse.

    cd '/media/kao/MONDVD/VIDEO_TS'
    ls -lh
    -r--r--r-- 1 kao kao  12K déc.   7  2003 VIDEO_TS.BUP
    -r--r--r-- 1 kao kao  12K déc.   7  2003 VIDEO_TS.IFO
    -r--r--r-- 1 kao kao  25M déc.   7  2003 VIDEO_TS.VOB
    -r--r--r-- 1 kao kao  32K déc.   7  2003 VTS_01_0.BUP
    -r--r--r-- 1 kao kao  32K déc.   7  2003 VTS_01_0.IFO
    -r--r--r-- 1 kao kao 1,0G déc.   7  2003 VTS_01_1.VOB
    -r--r--r-- 1 kao kao 1,0G déc.   7  2003 VTS_01_2.VOB
    -r--r--r-- 1 kao kao 675M déc.   7  2003 VTS_01_3.VOB

    À la taille des fichiers, on voit assez facilement ceux qui contiennent les essences vidéos. Le fichier VIDEO_TS.VOB correspond souvent à la boucle vidéo du menu du DVD.

    Pour en être sûr, on peut faire un test de lecture rapide avec ffplay :

    ffplay VTS_01_1.VOB
  2. Encoder

    Une fois la liste des fichiers utiles établit, on va utiliser ffmpeg en mixant plusieurs options :

    • concat pour concaténer les fichiers qui nous intéressent.
    • -map 0:v -map 0:a pour être certain d’affecter la vidéo au premier flux et le son au deuxième. Certains lecteurs n’aiment pas que l’on commence par du son.
    • et -vf yadif pour dés-entrelacer la vidéo. (À part si vous avez toujours un tube cathodique).

    Ensuite on peut enchaîner avec la compression de son choix :

    • h264 + aac :

      ffmpeg -i concat:VTS_01_1.VOB\|VTS_01_2.VOB\|VTS_01_3.VOB -map 0:v -map 0:a -c:v libx264 -crf 18 -maxrate 4000k -vf yadif -c:a libfdk_aac -b:a 320k /home/kao/Vidéos/MonDVD.mkv

      On peut voir que la conversion se fait dans le bon ordre :

      Stream mapping:
      Stream #0:1 -> #0:0 (mpeg2video (native) -> h264 (libx264))
      Stream #0:2 -> #0:1 (pcm_dvd (native) -> aac (libfdk_aac))
    • h265 + aac

      On peut adopter le h265 pour diviser le poids par deux, mais au risque de rencontrer des problèmes de compatibilité avec certains lecteurs vidéo :

      ffmpeg -i concat:VTS_01_1.VOB\|VTS_01_2.VOB\|VTS_01_3.VOB -map 0:v -map 0:a -c:v libx265 -crf 18 -maxrate 4000k -vf yadif -c:a libfdk_aac -b:a 320k /home/kao/Vidéos/MonDVD-h265.mkv
    • VP9 + OPUS

      On peut aussi jouer les puristes et passer par du format entièrement libre :

      ffmpeg -i concat:VTS_01_1.VOB\|VTS_01_2.VOB\|VTS_01_3.VOB -map 0:v -map 0:a -c:v libvpx-vp9 -threads 8 -crf 14 -vb 6M -vf yadif -acodec libopus -ab 256k  /home/kao/Vidéos/MonDVD-VP9.mkv

      Les réglages pour le vp9 méritent d’être affiné, j’ai rencontré quelques problèmes lors de relecture, notamment pour le calage à un endroit précis sur la timeline. Le format est encore jeune, on pourra aussi ajouter l’option -speed 4 pour accélérer l’encodage ou passer par du vp8, moins performant sur le papier, mais plus mature dans la pratique pour le moment.

  • Conclusion :

    Ce n’est pas si compliqué, mais le plus important est de ne pas dégrader la qualité, quitte à avoir des fichiers un peu lourd. Les multiples transformations et transcodages altèrent à chaque fois un peu plus l’image. Il est important d’être vigilant à chaque passe si l’on ne veut pas le regretter plus tard.

12 réflexions au sujet de « Sauvegarder ses DVD vidéo avec FFmpeg. »

  1. Ffmpeg n’est vraiment pas recommandable pour archiver les dvd…

    Soit l’archive est une archive et dans ce cas, faire une image iso suffit.

    Soit vous voulez transcoder pour garder un fichier lisible sur à peu près tous les appareils. Dans ce cas, ils faut se diriger vers handbrake et consorts… Pourquoi ? Car ffmpeg n’implémente pas vraiment la logique du DVD. Quand un VOB == un flux vidéo, ça fonctionne… Mais dans tous les autres cas, c’est l’échec.

    1. Je suis partie du principe qu’une cassette (linéaire) avait été transformé en VOB ( donc non-linéaire). Je cherchais donc à revenir à une lecture linéaire sans chapitre avec un fichier d’un seul tenant. Je n’ai pas réfléchis au chapitrage parce que je n’en ai jamais eu l’intérêt. Je préfère les objets simples sans menus. L’ISO n’est pas vraiment portable, c’est à dire lisible partout.
      Pour le chapitrage avec ffmpeg, il faut, peut-être, regarder du côté de l’option : -force_key_frames 0:05:00,chapters-0.1
      A explorer 🙂

  2. Pour moi, le but est l’abandon progessif du DVD comme support de nos vidéos, donc je préfère le transcodage à la sauvegarde de l’iso. De plus lire une ISO n’est pas toujours évident sur tout les appareils, il faut préférer des formats plus répandu comme le .mp4, le .mkv je pense.
    Le seul intérêt du DVD, ça peut être les menus et la navigation dans plusieurs vidéos sur un même sujet. Le MKV supporte les menus et les chapitres je crois. Mais personnellement, je préfère des vidéos séparées dans un même dossier que un seul fichier avec menu les contenant tous. C’est à la convenance de chacun.

  3. tu peux ajouter la taille des fichiers après conversion pour avoir une idée. Je suis surpris quand tu dis que tu peux diviser par 2 la taille du fichier en h265, mais ça m’intéresse et je ferai des tests.

  4. Je comprends et je suis complètement d’accord concernant le format DVD et la difficulté à lire les fichiers ISO.

    Tout ce que je disais était que ffmpeg n’est pas la solution la plus adaptée pour le transcodage de DVD, très spécifiquement : le support du format DVD (et des fichiers VOB) est très limité dans ffmpeg. Il n’est pas rare que ffmpeg ne trouve pas une piste audio, une piste de sous-titre. Parfois même, les fichiers obtenus sont corrompus.

    Le conseil des développeurs de ffmpeg ? Utiliser un autre outil supportant explicitement le format DVD pour extraire le flux vidéo de manière plus propre (et correcte) qu’un dump des fichiers VOB (par exemple en utilisant l’option dumpstream de mpv/mplayer). Puis utiliser ffmpeg sur ce nouveau fichier.

    Je recommanderais donc plutôt handbrake (qui a un CLI pour ceux qui ne veulent pas d’interface graphique) ou, à défaut, d’extraire le flux vidéo avec mpv plutôt que de faire une simple dump des fichiers VOB.

    Ps: x265 donne vraiment ce genre de gains, comme le x264 l’a fait pour le DivX… Mais pour l’instant bien peu de platines de salon peuvent le lire.

  5. Je crois qu’il y a la possibilité de créer de menus dans le mkv : http://matroska.org/technical/menu/index.html
    même si je n’ai pas la moindre idée de comment faire. Après moi, je ne sauvegarde pas les DVD commerciaux, seulement les films familiaux où les menus ont rarement un intérêt. Pour les films commerciaux que j’apprécie revoir et conserver, je préfère racheter une version Blu-Ray, je me suis trop habitué à la qualité pour revenir en arrière.

  6. Ayant eu récemment besoin de faire de la sauvegarde sans perte d’un DVD, je suis tombé sur MakeMKV : http://www.makemkv.com/forum2/viewtopic.php?f=3&t=224
    (Par contre, je n’ai pas vérifié qu’il récupérait bien les sous-titres mais j’ai bien l’audio, la vidéo et les chapitres sans aucune perte puisque c’est juste un changement de container sans re-compression).

    Pour le reste, comme indiqué plus haut, HandBrake est vraiment pratique.

  7. Pour diminuer la taille des fichiers et garder une bonne compatibilité avec les lecteurs de salon, tu peux augmenter le crf jusqu’à 22 voire 23 (23 étant le réglage par défaut), ça reste très correct. Une augmentation de 6 points de crf revient à diviser la taille par deux en gros. En contrepartie tu peux activer les modes slow voire slower (voire veryslow).
    Sinon x264 est l’implémentation libre d’un algorithme (H264) donc le format est bien libre (hors pays qui reconnaissent les brevets logiciels).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *