Un keylogger pour l'édition vidéo

Posté le 21 septembre 2024 - A Propos - Par Grafikart - Proposer une correction

Lorsque je crée une vidéo, la partie qui me prend le plus de temps est la partie montage. Mon style de contenu fait que je m'enregistre d'une traite pendant que je code et que j'explique les choses. Lors du montage, je dois faire du nettoyage en coupant les hésitations et les erreurs qui ont pu survenir pendant l'enregistrement.

Exemple de montage

Typiquement pour une vidéo de 30 minutes le ratio est le suivant :

  • Préparation du code en amont (souvent en live)
  • 40 minutes d'enregistrement
  • 50 minutes d'édition (cuts / raccords)
  • 30 minutes de vérification (je regarde la vidéo finale pour m'assurer que je n'ai pas fait d'erreur dans mes coupes, et je vérifie le rythme des explications)
  • 20 minutes d'export

Le principal problème avec cette approche est que je me retrouve à devoir regarder la vidéo au moins 2 fois et sur des formations de plus de 10 heures, cela devient rapidement pénible. Surtout que pendant cette phase je dois être focalisé sur le montage pour identifier les moment à supprimer.

Les pistes d'améliorations

Vu que c'est une partie que je n'aime pas forcément trop faire, j'ai cherché des solutions pour améliorer les choses.

Pourquoi ne pas prendre un monteur ?

La première idée serait de prendre un monteur qui s'occuperait de cette partie là, ce qui me permettrait de me focaliser sur la partie enregistrement. Le problème est qu'il faut une personne qui sache utiliser un logiciel de montage mais aussi être un bon développeur pour savoir quel moment il faut garder dans une explication technique (et ce n'est pas évident comme combo).

L'autre problème est que le montage fait, à mon sens, parti de l'identité du contenu. Même si mes éditions sont relativement limitées (cuts et raccords), elles apportent une certaine identité aux vidéos et j'ai peur de perdre une partie de cette identité en déléguant ce travail à une autre personne.

Les IAs !

Une autre idée serait d'utiliser une intelligence artificielle afin d'effectuer une partie du travail sur la vidéo. Même s'il existe des intelligences artificielles capables de faire des éditions simples (supprimer les vides, manipuler la vidéo à partir d'une retranscription), le résultat est loin d'être satisfaisant avec des cuts trop rapides et des vidéos qui ne respirent pas assez. Le travail pour repasser derrière l'IA s'avère aussi conséquent que de faire les choses soi même.

Il y a aussi le problème d'identifier les contenus qu'il faut supprimer dans une vidéo. À moins d'avoir une IA capable de comprendre le contexte général et ce que je souhaite transmettre ce n'est pas envisageable.

Marquer les erreurs

Une dernière solution est de mettre en place un système qui me permet, lorsque de la phase l'enregistrement, d'identifier les moments où il y a des hésitations ou des erreurs. Des marques me permettraient, lorsque du montage, de pouvoir identifier rapidement les zones à corriger sans avoir à regarder l'entièreté de la vidéo.

Solution technique

Pour en avoir parlé avec d'autres personnes, il existe des solutions pour mettre en place des marqueurs lors de l'enregistrement dans OBS. C'est très utilisé par les streamers pour identifier des moments clés qui pourront ensuite être utilisés par les monteurs (pour les best of par exemple). J'ai pu trouver plusieurs solutions, mais aucune n'étaient complètement satisfaisante pour mon cas d'utilisation :

  • La création d'un marqueur nécessite trop d'actions (clic dans une fenêtre externe).
  • Le format de sortie n'est pas exploitable dans mon logiciel de montage (CSV inexploitable par exemple).
  • L'outil est complexe à configurer et/ou ne fonctionne pas sur Linux.

L'avantage est que je suis développeur ! Mon objectif est de me créer un outil qui satisfasse mes besoins et qui me permette de rajouter facilement des marqueurs identifiables aisément dans mon logiciel de montage vidéo.

Les sous-titres

Le premier problème est le choix du système à utiliser pour enregistrer ces marqueurs. Le logiciel de montage que j'utilise a une piste qui est dédiée aux sous titres et je me dis que ça pourrait être une bonne piste pour enregistrer mes marqueurs. Pendant l'enregistrement, je génère un fichier de sous titres qui va contenir un sous titre à chaque fois qu'il y a une édition à faire. L'avantage est que ce format est simple à créer.

1
00:00:00,000 --> 00:00:01,000
CUT

2
00:01:52,000 --> 00:01:53,000
CUT

3
00:02:35,000 --> 00:02:36,000
CUT

4
00:02:38,000 --> 00:02:39,000
CUT

Le keylogger

Le second problème est qu'il me faut un moyen d'ajouter facilement un marqueur (un sous titre) sans forcément venir gêner mon enregistrement. Pour cela, je décide d'utiliser une touche de mon clavier qui ne sert à rien (la touche "Pause") est de l'assigner à la gestion des marqueurs.

Il me faut donc créer un keylogger perso qui enregistre à chaque fois que j'appuie sur cette touche (et seulement cette touche) et qui génère le fichier de sous titre au fur et à mesure.

Go

Vu que mon objectif est d'avoir un simple exécutable que je puisse lancer, je décide d'utiliser le langage Go. En cherchant rapidement sur Internet, je trouve des solutions pour pouvoir écouter la frappe sur un clavier à la fois sur Windows et Linux et j'implémente ces fonctionnalités dans le langage Go.

Le seul petit inconvénient est que dans le cadre de Linux, il est nécessaire de lancer le logiciel en tant que super utilisateur afin d'avoir accès à l'écoute des frappes sur le clavier (je n'ai pas trouvé de solution alternative). L'application va créer un fichier de sous titres au même niveau que l'exécutable et à chaque fois que la touche "Pause" est appuyée, une nouvelle entrée est enregistrée dans le fichier de sous-titres. Ce fichier peut ensuite être utilisé dans le logiciel de montage afin d'identifier rapidement les endroits où il y a eu des erreurs ou des modifications à effectuer.

Table de montage

De cette manière là, je n'ai plus besoin de regarder l'entièreté de la vidéo pour faire mon montage initial. Je peux directement aller aux zones indiquées par les marqueurs pour pouvoir faire les modifications. Cette approche a drastiquement réduit le temps pris par la partie montage.

Le code !

Pour ceux qui sont intéressé par le code, il est disponible sur mon GitHub.