Où sommes nous ?

Stabilisation des videos

pour ne pas vomir devant les vidéos prises par sa GoPro

Le gros problèmes lorsque l'on prend un vidéo avec une caméra embarquée ne disposant pas de stabilisateur, comme par exemple ma GoPro HD2 ...c'est que les vidéos peuvent être rapidement vomitives.
C'est évidemment que je ne recherche pas une stabilité parfaite en attaquant dans des champs de bosses, mais au moins que les vibrations les plus faibles soient filtrées, typiquement sur de la traffole ou de la "taule ondulée". Après pas mal de recherche, voici la solution que j'emploie.

Melt

Mlt est un framework de montage vidéo utilisé par de nombreux outils en ligne de commandes tel que FFMpeg ou graphique comme OpenShot. Parmi ses nombreux filtres, il offre des possibilités de stabilisation vidéo.

Il existe 2 versions du pluggin : videostab et videostab2. Dans les versions récentes, le premier serait ... plus récent que le second (sic).

A l'heure où j'écris ces lignes, j'utilise le second, car je préfère sa façon de gérer les parties ajoutées (si l'image doit être redressée par exemple, le logiciel doit inventer une partie de l'image) : alors que le premier affiche une sorte de trainée, le deuxième place une copie de l'image redressée ce qui rend le subterfuge plus discret.
Je n'utilise le premier que lorsque VideoStab2 n'y arrive pas, et dans ce cas, je tronque les bords de la vidéo obtenue lors du montage ... mais il faut être très, très, très patient !

Comment ça marche ?

Ce filtre fonctionne en 2 passes :

1er passe

Dans la première, il va effectuer une analyse du contenu de la vidéo pour générer des vecteurs de transformation. La ligne de commande est

melt parkinson.mp4 -filter videostab -consumer xml:parkinson.xml all=1 real_time=-2

avec parkinson.xml, le fichier intermédiaire où sont stockés les vecteurs.

2e passe

Dans la seconde, il utilise ce fichier pour transformer la vidéo.

melt parkinson.xml -consumer avformat:parkinson-stab1.mp4 vcodec=libx264 -qp0  acodec=copy preset=ultrafast

On notera les options suivantes :

Résultat

On remarque bien sûr que la stabilisation à ses limites : les mouvements rapides sont bien filtrés (typiquement, lors d'un passage de ski sur de la trafolle ou coup sur la caméra), mais ce n'est pas le cas des mouvements lents (mouvement de balancier pendant une succession de virage sur piste plate) ou de mouvements amples (champs de bosses). On peut sans doute améliorer les choses en jouant sur les options du plugin, mais pas encore essayé.

Enfin, le processus en lui-même est très long, surtout au niveau de la première passe qui utilise peu le multi-cores des processeurs actuels.

Le script, le script !

!/bin/bash
#Stabilize a video

if [ $# -ne 1 ]; then
    echo "Syntax : $0 video_file"
    echo "Output will be video_file-stab.mp4"
    exit 10
fi

vdo=$(basename $1)

melt $1 -filter videostab2 -consumer xml:${vdo}.xml all=1 real_time=-2

melt ${vdo}.xml -consumer avformat:${vdo}-stab.mp4 vcodec=libx264 -qp0  acodec=copy preset=ultrafast

On peut remplacer videostab2 par videostab suivant que le veuille utiliser le 1er ou le 2nd filtre.


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2024
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.