Numériser des VHS avec du vieux matériel et du logiciel libre

↩ Retour ∙ Publié le video unix-linux RSS

Les anglais ont l’expression rabbit hole pour parler d’un trou de lapin dans lequel on s’engouffre lorsqu’on veut résoudre un problème précis et qu’on se retrouve à devoir rechercher beaucoup de choses et faire face à des problématiques subséquentes.

Sauvegarder une vieille cassette vidéo fait partie de ces choses-là. Ça peut paraître simple de prime abord : on branche la sortie vidéo d’un magnétoscope sur un boitier d’acquisition relié à un ordinateur, on lance le logiciel, on démarre le magnétoscope et ça roule (ça déroule plutôt). En réalité les choses ont vite fait de se gâter.

Il y a quelques mois je suis tombé sur cet article terrifiant d’un homme essayant de numériser ses vidéos de famille. Après avoir galéré un bon moment il a préféré tout confier à un professionel. J’ai eu plus de chance avec mes expérimentations et mon matériel, alors je me suis dit que ce serait bien de raconter ça un petit peu.

Je n’ai pas vraiment de vidéo familiale à numériser (eh oui c’est triste) mais ce qui m’intéresse c’est de sauvegarder en bonne qualité les génériques de télévision, de programmes, les éléments d’habillage graphique, les jingles et les mires ; des choses qui souvent ne sont pas souvent documentées ni archivées, du moins pas de manière publique et pratique.

Le matériel

Le magnétoscope que j’ai utilisé est un Panasonic Omnivision stéréo Hi-Fi de la fin des années 90. C’est une bonne période pour ces appareils, ils sont assez récents pour ne pas être trop usés, possèdent des fonctionnalités sophistiquées mais ils sont de meilleure qualité que les derniers appareils fabriqués dans les années 2000.

Pour le boitier d’acquisition, j’ai ce vieux Dazzle DVC100 de Pinnacle depuis presque 10 ans. À l’origine il me servait à regarder la télévision analogique à l’aide de K!TV (avec le fichier key.txt et le plugin qui va bien évidemment), la carte était connectée à un démodulateur satellite.

Dazzle DVC100

Premiers essais

Étant donné l’âge du boitier, j’ai commencé par installer les pilotes d’époque sur un ordinateur portable secondaire doté de Windows, ce qui me permet par la même occasion de déplacer l’ordinateur au magnétoscope et non l’inverse.

J’ai commencé par tester l’acquisition par VLC et premier problème : pas de son. Évidemment je n’ai plus le disque du logiciel de capture propriétaire et payant inclus avec. Après quelques expérimentations avec des choses horribles comme AmaRecTV, je suis parti sur VirtualDub qui miraculeusement recevait le son de la carte. Problème, il y avait des saccades et le son se désynchronisait.

En faisant des recherches, j’ai découvert que la solution recommandée était d’utiliser une carte d’acquisition de qualité, comme par exemple le module Elgato vendu 130 $CA hors taxes, ce qui n’est pas à la portée de toutes les bourses.

Avec ce matériel de prestige, le problème aurait-il été résolu pour autant ? Pas sûr. J’ai lu que des problèmes de régularité dans la lecture pourraient provoquer des sauts de trame dans la capture. La magnétoscope est un dispositif mécanique avec des engrenages et des courroies qui s’usent. Pour régler le problème, il faudrait un magnétoscope doté d’un TBC (timebase corrector). Il existe des TBC ligne (pour corriger les effets de tremblement) et des TBC trame. On tape dans du matériel professionnel compliqué à trouver et cher en occasion (à moins de se lever à 6h du matin pour se taper toutes les brocantes et espérer avoir de la chance).

La difficulté à avoir du son m’a quand même fait douter sérieusement des vieux pilotes officiels. Après quelques recherches je suis tombé sur un pilote plus récent mis à disposition sur Reddit (oui je sais). Un progrès : j’ai pu avoir du son avec VLC. Mais là le comportement était étrange. En faisant une capture muette l’image était fluide. En activant le son la capture devenait saccadée, les saccades provoquant évidemment des sauts de trames et la désynchronisation du son.

Linux à la rescousse

Finalement j’ai sorti la clé USB de ma distribution fétiche, à savoir Fedora. L’installation était bouclée en 15 minutes montre en main. J’ai installé vite fait VLC et puis j’ai branché la carte. Non seulement elle est reconnue de suite, mais en plus le son fonctionne correctement et tout est fluide. 🥳

Je me suis senti un peu con parce que j’aurais du essayer ça dès le début plutôt que me pourrir la vie avec les pilotes pour Windows comme si on était en 1999. Malgré l’absence de TBC, le résultat est très correct tant que la cassette n’est pas trop usée. VLC fait une capture brute du flux vidéo, sans compression ; ça prend vite beaucoup de place donc après avoir capturé mes extraits je les compresse avec Handbrake.

Dazzle DVC100 La cassette du Dîner de cons m’a servi à faire des tests

Méthode en résumé

  • Brancher le magnétoscope sur la carte d’acquisition elle-même connectée au PC ;
  • mettre en route le magnétoscope ;
  • ouvrir VLC, aller dans Média > Ouvrir un périphérique de capture ;
  • choisir les entrée audio et vidéo correspondant à la carte et spécifier explicitement la définition ;
  • le flux vidéo doit s’afficher, sur un magnétoscope moderne en général un écran bleu : activer la barre d’outils spéciale enregistrement (Vue > Contrôles avancés) ;
  • appuyer sur le bouton 🔴 ;
  • démarrer la lecture sur le magnétoscope ;
  • appuyer encore sur 🔴 pour arrêter ;
  • une fois qu’on a un bon gros fichier (par défaut enregistré dans ~/Vidéos), il faut l’encoder avec Handbrake, on peut en profiter pour le désentrelacer par la même occasion.

Concernant la définition

Pour la définition verticale, il faut choisir en fonction du standard vidéo, à savoir 480 lignes pour du NTSC ou 576 lignes pour du PAL/SÉCAM, pour une image complète. On parle ici des lignes visibles qui sont capturées par le dispositif, à ne pas confondre avec le nombre total de 525 ou 625 lignes (respectivement) comprenant le VBI sur la source analogique, ce qui ne nous intéresse pas.

Pour la définition horizontale c’est plus compliqué. En analogique il n’y a pas de pixels mais on parle de points par ligne, définissant une certaine netteté. Il est de coutume de dire que les VHS « ont 300 points par ligne ». Parfois par abus de langage on entend même des choses confuses comme « les VHS ont une définition de 300 lignes » ce qui est faux : le nombre de lignes ne change jamais.

La précision de chaque ligne est variable en fonction du type de magnétoscope utilisé pour enregistrer (VHS, S-VHS, Betamax…), de la source d’origine, du standard vidéo et de la qualité de la cassette.

Il est de coutume de numériser le signal avec des lignes de 720 pixels, quel que soit le nombre de lignes. C’est souvent comme ça sur les DVD. Un DVD en NTSC contient en général une vidéo à 720x480, pourtant ce n’est pas un ratio de 4:3, d’ailleurs c’est la même définition pour les DVD en 16:9. Il n’y a pas de rapport entre la définition en pixels et le ratio de l’image. Le ratio est défini séparément dans le fichier et le lecteur étire l’image correctement. On parle alors de pixels rectangulaires.

Pour une capture européenne, si la carte d’acquisition le permet vous pourrez peut-être numériser en 768 pixels de large. Si c’est le cas tant mieux, ça donnera des pixels carrés pour un ratio de 4:3 et c’est plus précis que 720 pixels. Dans tous les cas c’est mieux de prendre la valeur la plus haute.

Définition et ratio

Fréquence d’image

C’est mieux de prendre la plus haute possible relativement au standard vidéo pour ne pas avoir de saccades : c’est-à-dire maximum 25 images/s en Europe ou 29,97 pour du NTSC. En vidéo analogique traditionnellement on transmet une ligne sur deux à chaque trame. On transmet toutes les lignes paires, elles s’affichent sur la télévision qui laisse un vide à la place de chaque ligne impaire, puis à la trame suivante on fait l’inverse. Il y a respectivement 50 ou 59,94 trames par seconde. Lors de la capture vidéo, les deux dernières trames sont assemblées, résultant en une image entière assez laide avec un effet peigne. Au moment de l’encodage on va pouvoir faire un désentrelacement propre.

Avant et après le désentrelacement Avant et après le désentrelacement

Paramètres d’encodage

J’ai calculé que la vidéo brute prenait environ 1,2 Go par minute, c’est beaucoup. Après compression en très bonne qualité en H265 on passe à 25 Mo par minute sur un enregistrement avec un peu de neige. C’est à peu près la même chose pour le WebM avec codec VP9.

Encoder une vieille vidéo avec du bruit ce n’est jamais très optimal, il faut bien doser les paramètres pour garder une vidéo finale de bonne qualité et éviter qu’aux défauts historiques de la cassette ne viennent s’ajouter des macroblocs MPEG ignobles.

Dans Handbrake à l’onglet Dimensions, j’ai désactivé le rognage (zéro partout) et j’ai décoché Garder l’aspect dans Géométrie d’affichage. À la place j’ai spécifié une largeur d’affichage de 640 pour une vidéo NTSC de 480, de sorte que l’aspect d’affichage soit de 4:3. Sur une vidéo européenne j’aurais mis 768 à la place de 640. Il s’agit là du ratio, on ne modifie en rien la définition du flux vidéo.

Géométrie du flux vidéo

Pour la compression en H265 j’ai choisi un facteur RF22 qui me donne un bon compromis entre le poids et la qualité. En WebM avec VP9/Opus la qualité CQ19 proposée par défaut semble être suffisante aussi. Le mieux c’est de faire des tests avec des petits extraits pour trouver le bon taux.

J’ai vu que Handbrake proposait des options intéressantes comme des filtres pour appuyer la netteté. Je n’ai pas tout testé parce que les encodages prennent du temps, mais il y a probablement moyen d’optimiser encore ses rendus.

À propos du désentrelacement, normalement Handbrake détecte tout seul le type de vidéo et applique automatiquement les bonnes options. La méthode de désentrelacement par défaut me semble identique à Yadif. C’est peut-être plus sûr d’activer explicitement Yadif pour être certain que le désentrelacement se fasse partout et pas sur une détection dynamique.

Pour le son, il ne faut pas hésiter à l’encoder en bonne qualité, je mets au minimum 192 kb/s s’il s’agit d’une cassette avec le son Hi-Fi. Le son mono à l’ancienne est vraiment déplorable. Le son stéréo lui par contre est enregistré en FM avec une qualité honorable. Ça vaut le coup de se trouver un magnétoscope Hi-Fi stéréo pour cette raison-là.

Compression du flux vidéo Handbrake affiche dans l’onglet « Résumé » les options appliquées au fichier

Pour couper un extrait ou enlever un morceau de vidéo on peut utiliser Avidemux qui est un logiciel bien pratique, un peu dans la veine de VirtualDub à l’époque. Il permet de travailler sur des vidéos brutes ou encodées. Dans ce dernier cas, en faisant des coupures proprement sur des images clé, il est possible d’exporter un extrait de vidéo sans réencodage.

Pour conclure

On peut numériser des cassettes correctement sans matériel coûteux et en utilisant uniquement des logiciels libres. Ce n’est pas très compliqué mais ça peut prendre beaucoup de temps selon la longueur des vidéos et la puissance de l’ordinateur à disposition, la vitesse d’encodage en étant dépendante.

Je termine avec quelques extraits de captures qui m’ont permis d’être sûr que le son et l’image restaient synchonisés.

Un court extrait du Dîner de cons
(le petit décalage horizontal est un problème du transfert original)

Un extrait de Monstres inc. pour ceux qui se souviennent de la cassette bleue
(on voit la protection anti-copie Macrovision tout en haut)

Si vous avez des questions, des suggestions, que vous souhaitez apporter des précisions ou corriger une erreur, n’hésitez pas !

Liens et références