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.

Compiler SimpleScreenRecorder

SimpleScreenRecorder (SSR) est un outil qui permet de capturer en vidéo son bureau.
Le logiciel est complet et permet en quelques clics d’enregistrer tout ou partie de son écran avec l’entrée sonore de son choix.

Logo SSR
SSR est plutôt récent, et il n’est pas encore disponible dans les dépôts Debian, voici comment le compiler et l’installer facilement :

  1. Installation des dépendances :

    dpkg --add-architecture i386
    apt update
    apt install build-essential pkg-config qt4-qmake libqt4-dev libavformat-dev  libavcodec-dev libavutil-dev libswscale-dev libasound2-dev libpulse-dev libjack-jackd2-dev libgl1-mesa-dev libglu1-mesa-dev libx11-dev libxfixes-dev libxext-dev libxi-dev g++-multilib  libx11-6 libxext6 libxfixes3 libxfixes3:i386 libglu1-mesa:i386

    Un peu de liaisons entre les libs :

    cd /usr/lib/i386-linux-gnu
    ln -s libGL.so.1 libGL.so
    ln -s libGLU.so.1 libGLU.so
    ln -s libX11.so.6 libX11.so
    ln -s libXext.so.6 libXext.so
    ln -s libXfixes.so.3 libXfixes.so
    ldconfig
  2. Compilation :

    cd
    mkdir simplescreenrecorder
    cd simplescreenrecorder
    wget /MaartenBaert/ssr/archive/master.tar.gz
    tar -zxvf master.tar.gz
    cd ssr-master
    ./simple-build-and-install
  3. Utilisation :

    Si vous êtes arrivés au bout de la compilation, vous devriez avoir un raccourci dans votre lanceur d’application, ou bien, vous pourrez le lancer  juste avec cette commande :

    simplescreenrecorder

    Pour l’utilisation, il suffit de se laisser porter par les indications, l’outil reste simple mais très complet. Ecran SSR 1 Ecran SSR 2

  4. Le mot de la fin :

    Voilà un logiciel plutôt simple pour enregistrer son bureau, en espérant bientôt le trouver dans les dépôts de Debian directement.

FFmpeg et VP9

Le VP9 commence à pointer son nez comme remplaçant du VP8 et concurrent crédible du H265/HEVC
Le principal intérêt de ces nouveaux codecs et de faire diminuer la bande passante, ou le poids des fichiers pour une qualité équivalente.

Le VP9 commence a bien être géré par un ensemble d’application, et de lecteur même si certaines versions de VLC sont touchés par un bug de lecture.

Donc pour être prêt, ou bien se lancer directement voici quelques commandes pour encoder en VP9 avec ffmpeg rapidement :

  1. Conversion :

    ffmpeg -i fichiersource.mkv -vcodec libvpx-vp9 -crf 10 -vb 4M -threads 8 fichierdestination.mkv
    • -crf 10 servant à établir un niveau de qualité entre 0 et 63 (plus petit = meilleure qualité)
    • -vb 4M servant à donner un objectif de débit, ici 4Mb/s
    • -threads 8 force le nombre de coeur à 8, l’autodétection ne fonctionnant pas encore.

    A défaut de vlc, on peut faire des relectures avec ffmpeg directement :

    ffplay fichierdestination.mkv
  2. Enregistrement du bureau :

    Pour des captures d’écrans en vp9 directement on ajoutera le paramètre « -speed » afin de privilégier la vitesse d’encodage plutôt que la qualité (4 étant plus rapide que 1).

    ffmpeg -f x11grab -r 25 -s 1920x1080 -i :0.0 -vcodec libvpx-vp9 -crf 4 -vb 2M -speed 4 -threads 8 output-vp9.mkv


    FFmpeg n’est pas obligatoire le plus simple pour faire des captures d’écrans, notamment si l’on veut qu’une seule fenêtre et/ou du son en même temps. Il faudra peut-être passer par :

  3. Inclusion dans une page web :

    Grâce au html 5 il est maintenant assez facile d’inclure dans une page web une vidéo en vp9, le mieux étant d’utiliser le container webm pour faire cela :

    <video width="400" height="222" controls="controls"><source src="/output-vp9.webm" type="video/webm" />
    

    Avec toujours un léger doute pour le support de ce format par Internet Explorer, Microsoft préférant mettre en avant ses formats. ( En même temps c’est leur problème pas le notre 🙂 )

  4. Conclusion :

    Voilà, donc une introduction à ce nouveau codec libre déjà prometteur. Pour en savoir plus :