Kinodioraptor 2.0, l’avaleur de bruits, d’images et de pentes

La bête est venue me secouer les épaules dans mon sommeil, vers 3h du matin, en murmurant : « Ta créature dépérit, tu ne lui donnes pas assez à manger ».

Ça m’a troublé, j’ai réfléchi, puis c’est venu tout seul : la façon de découper rapidement les fichiers vidéo de la GoPro. Je vous explique tout ça, vous allez voir, c’est exquis.

Je déteste convertir (réencoder) les vidéos de la GoPro, ça prend un temps fou sur mon portable. Je préfère les ouvrir sous Avidemux quand il faut couper des bouts (attente à un feu rouge, intersection ratée, etc.). Ceci dit, pour ne pas corrompre le fichier en raccordant les bouts non supprimés, il faut utiliser les images clés (keyframes). Or, quand il ouvre le fichier, Avidemux détecte d’abord toutes les images clés, pour assurer la qualité du découpage, avec pour conséquence que les fichiers des balades pour Kinomap, qui font en moyenne 5 ou 6 Go sur la GoPro en format H265, mettent beaucoup de temps à s’ouvrir.

J’avais déjà mis une fonction de découpage dans le Kinodioraptor, qui ouvre les fichiers vidéo instantanément dans le lecteur MPV, mais si par malheur je découpais ailleurs que sur une image clé, ça corrompait parfois la vidéo. Ne sachant pas, avec MPV, où se trouvaient les images clés, j’ai dû retirer cette fonction, et c’est sans doute pour ça que la bête est venue me réveiller ce matin. Elle savait elle, qu’il y avait une solution toute simple.

Tous les fichiers mp4 de la GoPro, quand je les ouvre dans Avidemux, contiennent des images clés à intervalles de 1,001 seconde. La première se trouve donc à 1,001, la deuxième à 2,002, la troisième à 3,003, etc.

Sachant cela, je peux ajuster mon code (l’ADN de Kinodioraptor) pour qu’il se déplace toujours de 1,001 seconde, ou, pour la lecture 2x, 3x et 4x, par des multiples de 1,001 seconde.

La conséquence de cela, c’est que je peux (1) ouvrir le fichier rapidement puisque le lecteur MPV du Kinodioraptor se fout des images clés (ne les cherche pas), et, tout aussi important, (2) découper les fichiers vidéo sans risquer de les corrompre.

J’ai donc remis cette fonction que je croyais impossible à mettre en œuvre, et j’en ai profité pour ajouter une fonction de lissage de la pente des fichiers GPX. Celles que produit mon GPS sont toujours en dents de scie, mais elles ne font pas le poids quand mon Kinodioraptor croque dedans : il n’en fait qu’une bouchée et recrache une pente bien lisse (pour cela, je me suis inspiré de GPX Smoother et d’une discussion avec Perplexity AI.

Voici donc où nous en sommes : Le traitement audio par mixage ☑, la découpe vidéo sans réencodage ☑, et le lissage de la pente du fichier GPX ☑.

Sifflons Kino, pour qu’il se montre le bout du museau.

Dans le coin supérieur gauche, un onglet [Player] pour la lecture de la vidéo, et un autre onglet pour le découpage vidéo et le lissage de la pente. Je n’ai pas ajouté de bouton pour le découpage vidéo dans le menu, parce que je l’aime bien comme ça ; les points de début et de fin, pour les sections à couper, s’insèrent tout simplement avec les combinaisons de touches de clavier Ctrl-i (pour in) et Ctrl-o (pour out). Tous ces points de début et de fin de sections à couper se trouvent sur des images clés du fichier de la GoPro, et si par hasard le lecteur MPV ne se trouve pas précisément (suite à un déplacement image par image au lieu de seconde par seconde), Kinodioraptor leur donne un petit coup de langue en coulisses, lors du traitement de découpe, pour les remettre à la bonne place.

Voyons l’autre onglet.

Il contient deux boutons de sélection : le premier pour sélectionner le fichier des sections à découper (videotrimming.txt, sauvegardé automatiquement chaque fois qu’un point in ou out est ajouté), et un bouton de sélection du fichier GPX à lisser.

Quand on clique sur [Video Trimming], le Kinodioraptor avale toutes les sections inutiles, crée une nouvelle vidéo, ferme la vidéo originale et ouvre la nouvelle. On peut alors passer à l’étape du traitement sonore, expliqué dans le billet précédent.

Quant au lissage du tracé GPX, cliquer sur le bouton [GPX Smoothing] fait apparaître une première fenêtre pour le lissage en tant que tel…

puis une fenêtre pour spécifier un seuil de détection des changements soudains d’altitude invraisemblables (quand le GPS hallucine).


Comme je disais hier dans la section des commentaires (qui malheureusement ne s’affiche pas dans tous les navigateurs, et notamment sur les téléphones, je crois), j’ai ajouté une transition sonore avant et après les sections sélectionnées pour le mixage audio. Ça assure la fluidité de la transition. Concrètement, il s’agit d’un filtre acrossfade de ffmpeg, d’une durée de 0,5 seconde. Et pour vérifier l’effet obtenu, j’ai ajouté 3 secondes au début et à la fin de l’échantillon sonore pré-traitement…

Ici, la section à mixer est d’une durée de 3,7 secondes, mais quand on clique sur [Listen], Kinodioraptor lit un échantillon de 9,7 secondes pour permettre de vérifier la fluidité de la transition.


Tout ceci reste pour l’instant limité à un usage privé sur ma machine (qui tourne sous Mx-Linux). Tout fonctionne, je n’ai pas rencontré de bogues jusqu’ici, on verra à l’usage. Les améliorations de la transition sonore vont apparaître graduellement sur les vidéos récentes que j’ai en réserve et mettrai sur Kinomap au cours des prochaines semaines, quoique pas nécessairement dans l’ordre chronologique du filmage et de la post-production.


👉 Vous pouvez laisser un commentaire avec un pseudonyme, ou un commentaire anonyme en cliquant simplement sur « Post ».