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.

APT : Début de simplification

Grande parmi les anciens, l’application APT commence à mixer les possibilités d’ apt-get et d’ apt-cache sous la même commande apt . L’évolution est déjà présente dans Debian Jessie et permet de retrouver sous la même bannière des fonctions disponibles dans les autres commandes d’APT. Le but étant d’avoir une syntaxe plus simple et une meilleure lisibilité des résultats, notamment avec de la couleur.

Donc :

apt install blender

au lieu de :

apt-get install blender

ou encore

apt show blender

au lieu de :

apt-cache show blender

La commande apt simplifie aussi le listing de paquet avec :

apt list
apt list --installed
apt list --upgradable

pour ces commandes il fallait souvent passer par dkpg et la bonne option : dpkg-query -l pour obtenir le même résultat.

Donc si on s’en réfère au man d’apt 1.0 :

apt (Advanced Package Tool) est un outil en ligne de commande pour
gérer les paquets. Il fournit une interface en ligne de commande au
système de gestion de paquets. Voir également apt-get(8) et apt-
cache(8) pour davantage d'options en ligne de commande.

list
La commande list est utilisée pour afficher une liste de paquets.
Il gère les motifs du shell pour chercher les noms de paquets,
ainsi que les options suivantes : --installed, --upgradable,
--all-versions.

search
La commande search recherche le(s) terme(s) donnée(s) et affiche
les paquets correspondants.

show
La commande show affiche les informations sur le(s) paquet(s)
donné(s).

install
La commande install est suivie du nom de un ou plusieurs paquets
dont l'installation ou la mise à jour est souhaitée.

On peut choisir d'installer une version particulière d'un paquet en
faisant suivre son nom par un signe égal et par la version. Cette
version sera recherchée et l'installation sera demandée. On peut
aussi choisir une distribution particulière en faisant suivre le
nom du paquet par une barre oblique et par le nom de la
distribution ou de l'archive (stable, testing, unstable).

remove
La commande remove est identique à la commande install, les paquets
étant alors supprimés et non installés. Veuillez noter que la
suppression d'un paquet en laisse les fichiers de configuration sur
le système. Quand un signe plus est accolé (sans espace
intermédiaire) au nom du paquet, le paquet est installé au lieu
d'être supprimé.

edit-sources
La commande edit-sources permet de modifier le fichier sources.list
et fournit des vérifications de sécurité de base.

update
La commande update permet de resynchroniser un fichier d'index
répertoriant les paquets disponibles et sa source.

upgrade
La commande upgrade permet d'installer les versions les plus
récentes de tous les paquets présents sur le système en utilisant
les sources énumérées dans /etc/apt/sources.list. De nouveaux
paquets seront installés, mais les paquets installés ne seront
jamais supprimés.

full-upgrade
La commande full-upgrade remplit la même fonction que upgrade mais
peut aussi supprimer des paquets installés si cela est nécessaire
pour résoudre un conflit entre des paquets.

Voilà pour le moment, mais les versions suivantes, notamment en vue pour Debian Stretch, proposeront des possibilités supplémentaires, comme l’ auto-remove et l’ auto-clean . ( Annonce APT 1.1 )

Même si cette nouvelle syntaxe prendra un peu de temps à rentrer dans les mœurs, il est intéressant d’y jeter un coup d’œil, notamment pour apt list –installed qui facilite bien les choses.

De plus apt à l’amabilité de prévenir de sa jeunesse :

WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts.

(Attention : apt n’a pas encore une interface CLI stable. A utiliser avec précaution dans les scripts.)

Cette mention est une précaution et devrait disparaître, à ne pas en douter, dans les prochaines versions.

Affaire à suivre donc…

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 :

Finaliser l’installation de Jessie

Suite à mon billet précédent , Debian est maintenant déployée sur ma machine, mais à mon goût il reste incomplet, voici donc, quelques trucs à faire après une installation toute fraîche :

  1. Ajouter les dépôts contrib et non-free à son sources.list.

    Le sources.list référence l’ensemble des dépôts sur lesquels on veut pourvoir aller chercher des paquets. Par défaut, le sources.list de Debian ne présente que les dossiers des dépôts contenant des paquets libres. Les paquets propriétaires, dont les codes sources ne sont pas fournis, se trouvent dans non-free, contrib hébergeant des paquets libres mais qui peuvent avoir besoin de paquet situé dans non-free pour fonctionner. Personnellement j’ai 3 paquets non-free et 6 paquets contribs d’installés pour 3000 paquets entièrement libres.

    On édite le fichier sources.list avec l’application de son choix.

    gedit /etc/apt/sources.list
    

    puis on rajoute la mention contrib et non-free aux lignes :

    deb http://http.debian.net/debian jessie main contrib non-free
    deb-src http://http.debian.net/debian jessie main contrib non-free
    
    deb http://http.debian.net/debian jessie-updates main contrib non-free
    deb-src http://http.debian.net/debian jessie-updates main contrib non-free
    
    deb http://security.debian.org/ jessie/updates main contrib non-free
    deb-src http://security.debian.org/ jessie/updates main contrib non-free

    Et enfin, on met à jour la liste des paquets disponibles avec la commande :

    apt update

    lien : /fr/SourcesList

  2. Mettre à jour le microde de son CPU :

    Une fois que l’on a activé les dépôts non-free, on peut mettre à jour le microde/firmware de votre processeur.
    On vérifie la version :

     cat /proc/cpuinfo | grep -i microcode

    Puis pour des processeurs AMD :

    apt install amd64-microcode

    Ou pour des processeurs Intel :

    apt install intel-microcode

    Le changement sera visible au prochain démarrage.

    Lien : /fr/Microcode

  3. Activation des pilotes graphiques libres :

    Les pilotes libres de cartes graphiques fonctionnent souvent très bien, il n’est pas nécessaire de se jeter sur les pilotes propriétaires pour que cela fonctionne correctement. Les pilotes propriétaires peuvent proposer plus de fonctionnalités notamment 3D mais apportent souvent plus d’instabilités et de bugs pas toujours facile à détecter. Croyez-en mon expérience, fuyez les pilotes propriétaires, pour avoir plus de tranquillité.

    Première étape, connaître sa carte :

    lspci -v | grep VGA

    Qui ici m’indique la présence d’une carte graphique Intel :

    00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller

    Afin de savoir quel pilotes j’utilise, je regarde le résultat de la commande glxinfo :

    glxinfo | grep -i opengl

    notamment les premières lignes :

    OpenGL vendor string: Intel Open Source Technology Center OpenGL renderer string: Mesa DRI Intel(R) Haswell Desktop OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.2 OpenGL core profile shading language version string: 3.30

    Ici, je peux voir que j’utilise le pilote Mesa (libre) sur une carte Intel et que ma machine peut gérer de l’OpenGL 3,3.
    Si la mention llvmpipe est présente, c’est que l’OS utilise le CPU et non le GPU pour calculer l’affichage. Cela peut être normal pour une machine virtuelle, mais pour une machine physique disposant d’une carte radeon, il faudra ajouter le paquet firmware-linux-nonfree afin que la carte soit bien prise en compte.

  4. Installer le plug-in flash :

    Le plug-in flash n’est pas un cadeau, notamment en termes de sécurité, il est conseillé de le fuir si possible mais si vous n’avez pas le choix :

    apt-get install flashplugin-nonfree 

    ou alors pour avoir une version plus récente : /fr/Freshplayerplugin

  5. Monter automatiquement les partitions EXT 4 à chaque démarrage :

    Créer un point de montage:

    mkdir /media/Documents

    Lui donner les droits du user courant.

     chown user:user /media/Documents/

    Trouver l’UUID de la partition que l’on souhaite monter

    ls -l /dev/disk/by-uuid

    On édite le fichier fstab

    gedit /etc/fstab

    Et on y ajoute une ligne en combinant UUID et point de montage

    UUID=df566ec1-f2c3-4453-b5de-04d19ca29a2f /media/Documents          ext4    defaults        0       2

    Une fois enregistré, on monte la partition sans même redémarrer.

    mount -a
  6. Activer le verrouillage numérique au démarrage :

    apt install numlockx

    Et voilà, c’est un bon début, ensuite on hésite pas à consulter la documentation et les forums pour en savoir plus:

Installer Debian 8 Jessie

L’installation de Debian est plus triviale que ce l’on pense, il faut juste savoir un peu ce que l’on souhaite faire avant. En effet, Debian se veut universelle et ne souhaite pas discriminer les possibilités d’utilisations. Elle peut donc être autant un bureau, qu’un serveur, qu’une machine virtuelle ou bien tout à faire autre chose. Voici ici mes choix pour en faire un ordinateur de bureau : Debian Jessie

  1. Trouver l’image de Jessie :

    Personnellement j’utilise une image d’installation par Internet (netinst). Elle est minimaliste (247Mo), nécessite une connexion à Internet mais permet d’installer facilement le ou les interfaces de son choix : https://www.debian.org/distrib/netinst
    Adepte du 64 bits, je jette mon dévolu sur la dernière image disponible : debian-8.1.0-amd64-netinst.iso

  2. Copier l’image sur une clé :

    Une fois en possession de l’image, je déploie l’image sur clé USB. Soit avec l’aide d’ Unetbootin , soit en ligne de commande directement, merci dd.

    Je me place dans le dossier de téléchargement :

    cd ~/Téléchargement/

    Je vérifie le chemin de la clé, parce que dd permet d’écraser facilement la mauvaise partition :

    fdisk -l

    Ma clé se trouvant en /dev/sdc1 , je choisis comme destination /dev/sdc (sans le 1).

    Ensuite j’écrase ma clé (avec précaution) :

    dd if=debian-8.1.0-amd64-netinst.iso of=/dev/sdc
  3. Installation graphique :

    Une fois que dd a finit, il suffit de démarrer sur sa clé avec la machine de son choix. Debian Installeur panneau 1
    Si votre machine démarre en UEFI plutôt qu’en Bios, l’apparence devrait changer légèrement : Debian Installeur panneau 1
    Dans cet exemple je choisis « Graphical install » afin d’avoir un installeur plus « sexy » utilisable à la souris.
    Ensuite je me laisse porter par les différents panneaux. Les questions sont souvent simples et la plupart du temps je choisis les paramètres par défaut. Les explications sont claires et entièrement disponible en français, prenez le temps de les lire. Il y a une vingtaine de panneaux dont certains sont intéressants à détailler :

    • La création d’un compte root :

      Personnellement, je choisis de ne pas créer de compte root, je préfère déclarer le premier user en tant qu’administrateur et j’utiliserais la commande sudo au coup par coup. Compte Root

    • Partitionnement :

      Là, tout dépend de vous et ce que vous voulez en faire. Je choisis souvent d’avoir un « home » séparé afin de faciliter les réinstallations et la sauvegarde des paramètres. Partitionnement

      Dans le cas d’un partitionnement manuel, il est bon de choisir une partition / (racine) de taille confortable, les logiciels, et les jeux seront installés dedans, 5 Go au minimum mais 30 Go c’est plus confort.

      On ajoute aussi un /swap qui fait environ 1.5 fois la taille de la RAM. Le swap servira notamment à décharger la RAM lors des hibernations. Il ne faut pas qu’il soit plus petit que la taille de la RAM en tout cas.

      Pour la partition /home, libre à vous, cette partition contiendra les données et les paramètres des comptes utilisateurs.

      Si votre carte mère utilise un firmware UEFI et non BIOS, une partition /boot/efi de 128Mo sera nécessaire pour pouvoir démarrer le système d’exploitation.

      Et dans le cas d’un formatage en LVM il faudra en premier créer une partition /boot (128Mo) en dehors du LVM afin que la carte mère sache la lire.

      Cela pourrait donc ressembler à quelque chose comme ceci pour un disque de 128Go : PartageDisque

    • Installation et choix des paquets :

      Étant parti d’un cd « net-install » avec le strict minimum, je demande à l’installeur de passer par un miroir pour obtenir le reste des paquets nécessaires : Jessie19

      Pour le choix du miroir, tout dépend de votre position géographique, moi je me contente du premier de la liste. Jessie21
      Un peu plus tard, on peut choisir la destinée de notre Debian. Personnellement je garde, là aussi, les paramètres par défaut afin d’avoir Gnome 3 et le parc de logiciels classiques que requiert une utilisation bureautique (Firefox, LibreOffice, Evolution…). Taskell

      Si vous souhaitez ne pas utiliser d’interface graphique, ou l’installer plus tard, décochez « GNOME » et « environnements de bureau Debian » (Il faut tout décocher sinon cela installe quand même l’interface par défaut 🙂 ).

    • Grub pour amorcer le démarrage :

      Pour finir je laisse l’installeur déployer Grub sur la première partition de mon disque primaire (/boot/grub/), afin de disposer d’un sélecteur d’OS et de noyaux. L’installation est finit à l’aide de l’iso, il n’y a plus qu’à relancer en pensant à retirer la clé USB, et l’on devrait tomber sur un bureau tout beau, tout neuf. Grub

  4. Finaliser l’installation

    Voilà, avec un peu d’entraînement et un peu de familiarisation avec les termes informatiques, on s’en sort très bien. Dans le billet suivant , je détaille quelques étapes pour améliorer cette installation toute fraîche.

Mise au propre

Voilà, plusieurs années que je tiens un blog sans prétention qui me sert surtout à stocker mes pense-bêtes informatiques : http://kaocode.blogspot.fr/ . La plate-forme blogspot a eu le mérite de me servir gratuitement pendant tout ce temps, mais son manque de souplesse, de possibilité, la lourdeur des pages, des animations, et tous ces petits bugs ont fini par me lasser.

J’ai donc décidé de prendre mon indépendance, quitte à faire chauffer un tout petit peu le porte-monnaie.

Voilà, donc ma nouvelle adresse : / , plus simple, dans laquelle j’espère faire mûrir quelques idées, notes et procédures que j’élabore, petit à petit, au fil de mes pérégrinations informatiques. Le thème portera sur quelques logiciels libres et leurs utilisations.

De ma vie, de mon œuvre on s’en fout, le plus important est ce qui suit : des articles sur des logiciels libres et ouverts.