< Stabiliser les vidéos de camescope sous Linux | Roozeec Linux Blog
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Loading ... Loading ...

Stabiliser les vidéos de camescope sous Linux

Je fais régulièrement des vidéos (comme beaucoup d’entre vous sûrement) avec mon camescope HD et les transfère ensuite sur mon PC afin d’en faire une sauvegarde ou de les retravailler pour y ajouter de la musique et des textes.

J’utilise pour cela 2 principaux logiciels : Openshot et FFdiaporama. Chacun a ses avantages et ses inconvénients, mais ce n’est pas le propos de cet article. Les vidéos faites avec les camescopes compacts peuvent se révéler tremblantes suivant les conditions dans lesquelles vous avez fait la prise de vues (marche, course, vélo, etc ..) . Même si le stabilisateur est enclenché, on peut voir le tremblement de façon plus ou moins prononcé.

Dans cet article je vais vous présenter comment on peut rendre un film fluide sans tremblements afin de le rendre agréable à regarder, surtout pour des clips vidéos.

Pour celà je vais partir d’une séquence vidéo sur la cote de granit rose.

Voici par exemple, un bout de vidéo avant et après la stabilisation. le résultat est assez parlant.

J’ai donc chercher comment faire de la stabilisation sous Linux. D’après ce que j’ai vu,il y a trois méthodes dont 2 qui partent de la même base. Il existe un plugin de stabilisation Vid.Stab qui peut etre utilisé par le programme trancode et par le programme melt.

  1. Transcode avec le plugin Vid.stab
  2. Melt avec le plugin Vstab
  3. Virtualdub (sous wine) avec le plugin Deshaker.

1) Transcode avec le plugin Vid.stab

Ce plugin est développé par Georg Martius : http://public.hronopik.de/vid.stab/features.php?lang=en
L’installation est relativement simple. Il suffit de télécharger le plugin sur la page Download du plugin et d’installer les fichiers contenus dans le zip dans le répertoire /usr/lib/transcode. Ensuite, il faut lancer 2 commandes transcode pour faire la stabilisation : une pour faire l’analyse du fichier vidéo et l’autre pour faire la stabilisation.

Vous pouvez consulter l’article suivant pour plus d’infos :

J’ai fait l’essai et ca n’a pas été vraiment concluant. En fait je pense que tout est une histoire de paramètres, et qu’il faut donc faire pas mal de test avant d’avoir une bonne configuration. Je pense qu’il faut que je refasse des essais.

Mise à Jour 30 mars : Jetez un oeuil sur le commentaire de Cenwen sur cet article qui donne beaucoup d’informations intéressantes. Merci Cenwen

2) Melt avec le plugin Vstab

Attention : les manipulations ci-dessous sont a faire en toute connaissance de cause du fait de l’ajout de repository pour les programmes.

Ce plugin est développé par Marco Gittler (et amélioré par Dan Dennedy) basé sur le travail d’un autre filtre crée par Kanade-Lucas Tomasi : http://vstab.sourceforge.net

Avant que vous ne vous lanciez dans cette manipulation (qui peut fonctionner pour certains) , je tiens a vous dire que de mon coté ça n’a pas fonctionné du tout et en plus que ça a un peu modifié ma config ubuntu en désinstallant pas mal de choses. Donc faites attention aux manipulations.

Je suis parti de l’article Ubuntu – Stabilize your camcorder video with MELT & vid.stab pour faire tout celà. Les conditions pour faire cette manipulation sont les suivantes :

  • Avoir FFMPEG en version 0.9 ou +
  • Avoir MLT en version 0.7.6 ou +

Voyons donc les version des outils présents sur la machine :

FFMPEG :

ffmpeg –version (attention 2 tirets)
ffmpeg version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2000-2011 the Libav developers

MELT

melt –version
MLT melt 0.7.4

Donc, on voit ici que les versions sont incorrectes pour ce que je veux faire. Il faut donc installer les nouvelles version avec un nouveau dépôt. Je me suis pris pas mal la tête entre les installations de paquets qui désinstallent d’autres, et ainsi de suite avant de tomber sur ce message sur le forum  : http://forum.ubuntu-fr.org/viewtopic.php?id=834251

Cependant, rien a faire, je n’y arrive pas, le programme melt m’indique une erreur de codecs etc …  et j’abandonne là dessus .

3) Virtualdub (sous wine) avec le plugin Deshaker.

Là c’est une manipulation carrément différente, car on utilise un programme Windows dans le moteur Wine bien connu des linuxiens. Le principe est d’utiliser Virtualdub avec un plugin de stabilisation (deshaker). Pour tout ceci , j’ai utilisé le didacticiel suivant : HowTo install VirtualDub under wine with deshaker plugin . Le principe est de faire les choses suivantes:

  • Installer Wine
  • Télécharger Virtualdub et l’installer
  • Télécharger et installer les codecs Vidéo/Audio pour Windows ffdshow
  • Télécharger et installer les codecs Xvid
  • Télécharger et installer le plugin de stabilisation(deshaker)

Je vous laisse le soin de suivre le tutoriel pour toute cette phase d’installation, ce n’est pas très compliqué à faire. Une fois ceci fait passons donc à la pratique.

Ce que je veux faire , c’est passer mes videos MTS (format HD) à travers une phase de stabilisation en vue d’en faire un petit clip vidéo par exemple. Je vais donc procéder de la suite dans un petit script shell unix.

  1. Convertir ma vidéo en fichier AVI pour virtualdub car celui ci n’accepte pas les fichiers MTS d’origine.
  2. Lancer une phase Virtualdub d’analyse de la vidéo (phase 1)
  3. Lancer la phase Virtualdub de stabilisation
  4. Le script final

1) Conversion MTS en AVI

Une commande très simple ffmpeg permet de faire le travail :

2) Analyse de la vidéo

Cette phase 1 est assez longue car Virtualdub teste la vidéo afin de déterminer les endroits où il y a tremblement. Pour ce faire, il suffit de charger la vidéo avec VirtualDub , d’appliquer le filtre Deshaker et de le configurer avec toutes les valeurs par défaut. Pour lancer , l’analyse il suffit de sélectionner le menu Vidéo :

Il faut aussi penser à configurer la compression Vidéo au format xvid, sinon le logiciel ne fera pas de compression et vous vous retrouverez avec un gros fichier en sortie (par exemple 2 go pour 6 secondes de vidéos …). Pour ce faire, dans le menu Vidéo , puis compression , il faut appliquer la compression Xvid

3) Stabilisation

Dans cette phase 2 qui est plus rapide que la précédente, Virtualdub va prendre ses informations saisies en phase 1) afin de générer une vidéo stabilisée. Cependant, pour faire ce travail, virtualdub réajuste chaque image de la vidéo afin d’éviter le tremblement. Ce qui conduit au final avec une vidéo avec des bords tremblants noirs. Il faut donc les supprimer de la vidéo finale. Pour ce faire il faut sélectionner le menu Edge compensation à la valeur : Adaptive zoom full

A noter : Je pense qu’il faut passer pas mal de temps pour bien configurer le plugin deshaker afin d’obtenir un résultat bien fluide. J’ai remarqué sur certaines séquences qu’il y avait des sauts du fait d’un gros tremblement ou sursaut de ma vidéo. Je pense qu’une configuration sur la sensibilité des sauts est sûrement possible pour parfaire le tout.

4) Le script

J’aime bien les scripts, je n’aime pas les choses répétitives donc je préfère passer un peu de temps a écrire et peaufiner les scripts pour en gagner plus tard.

Il faut d’abord enregistrer le travail que Virtualdub doit faire , c’est à dire les 2 passes du plugin deshaker ainsi que le compression xvid. Pour faire celà c’est très simple. On va créer 2 fichiers : un pour la phase 1 et un second pour la phase 2. Ces 2 fichiers ( process-ph1.vcf et process-ph2.vcf ) sont crées simplement par virtualdub avec la méthode suivante :

  • a) Ajouter et Configurer le plugin Deshaker. Positionner en phase 1.
  • b) Mettre la compression XVID
  • c) Dans le menu Fichier, sélectionner -> Save Processing Settings et enregistrer en donnant un nom de fichier.

d) Refaire la meme chose pour la phase 2 du plugin Deshaker.

Voilà qui est donc fait pour la configuration de Virtualdub. Maintenant je positionne ces scripts à l’endroit où son mes vidéos pour simplifier la chose.

La script (gen-stab.sh) devra donc faire les choses suivantes :

  • a) Convertir les fichiers MTS en AVI
  • b) Lancer la phase 1 de la stabilisation avec le fichier process-ph1.vcf
  • c) Lancer la phase 2 de la stabilisation avec le fichier process-ph2.vcf et créer le fichier « stabilisé »

Voici donc les script , rien de bien compliqué :

MTSDIR=/media/DDSVG/David/camescope/videos
WORKDIR=/work/ClipGranitRose2/AVI
WINDIR=/home/roozeec/Vidéos/VirtualDub

ffmpeg -y -i $MTSDIR/$1.MTS -f avi -aspect 16:9 -vcodec mpeg4 -b 8000000 -acodec ac3 -ab 128000 -s 704×384 $WORKDIR/$1-conv.avi

cd $WORKDIR
wine $WINDIR/VirtualDub.exe /c /s process-ph1.vcf /p $1-conv.avi temp.mp4 /r /x;
wine $WINDIR/VirtualDub.exe /c /s process-ph2.vcf /p $1-conv.avi $1-stab.avi /r /x;
rm temp.mp4

Pour le lancer, c’est très simple , il prend un paramètre donnant le numéro de la vidéo. Par exemple mon fichier MTS est 03102.MTS , je lance donc la script de cette facon : gen-stab.sh 03102 , il généra donc un fichier 03102-stab.avi

Maintenant, ca donne quoi au final ? Voici une vidéos de la cote de granit rose avec à gauche la vidéos stabilisée et à droit la vidéo originale :
Voilà vous savez tout , il faut passer quand même pas mal de temps , je pense , sur la configuration pour avoir un résultat satisfaisant pour les vidéos qui contiennent un tremblement prononcé.

Si vous avez aimé cet article, merci de voter pour lui ! :


Articles qui peuvent vous intéresser:

  1. Mettre une vidéo DV (camescope) sur un blog avec le format FLV
  2. Capture vidéo du bureau sous Beryl
  3. Les news de Openshot 1.3.0 (Editeur vidéo pour Linux)
  4. Géoportail sous linux
  5. Vidéos DailyMotion, youtube en vrai plein écran
Vous pouvez ajouter un commentaire, ou un trackback à partir de votre site.


Contrat Creative Commons
Cet article est sous licence Creative Commons Paternité
Partage des Conditions Initiales à l'Identique 2.0 France License

10 Responses to “Stabiliser les vidéos de camescope sous Linux”

  1. Sylvain dit :

    Merci pour le billet, ça pourra peut-être servir.
    Cela semble assez efficace :)

  2. Cenwen dit :

    Bonjour,

    Très bon article, comme d’habitude, dommage qu’ils soient maintenant plus rares qu’à une époque.

    Plusieurs remarques :

    Le lien vers le How to install virtualdub with wine est invalide : Voici (je suppose le bon lien : http://forums.opensuse.org/english/get-technical-help-here/how-faq-forums/unreviewed-how-faq/429428-howto-install-virtualdub-under-wine-deshaker-plugin.html)

    Le plugin de Transcode et de MLT sont réalisés par deux personnes differentes dont voici les bons liens :
    -vid.stab pour Transcode=> http://public.hronopik.de/vid.stab/features.php?lang=en
    -vstab pour MLT :+> http://vstab.sourceforge.net/
    Comme tu peux le voir ce sont deux sites differents.

    Transcode est une solution très intéressante malheureusement il ne concerne que les vidéos en avi, xvid/divx et mpeg2/mpeg4. Son auteur réalise actuellement un portage sur FFmpeg afin que nous puissions l’intégrer dans une future version d’ Openshot.Cependant comme nous, il le réalise sur son temps libre et cela prend du …………temps.

    Voici une autre vidéo réalisé avec ce filtre assez impressionnante :
    http://be-jo.net/2011/09/video-entwackeln-in-linux/

    Il n’était pas nécessaire de l’installer car il est déjà dans Transcode.

    Pour vérifier, il suffit de passer la commande suivante qui liste tous les filtres disponibles:
    ls -l `tcmodinfo -p`/filter*.so

    Pour connaître les paramètres du 1er filtre appelé stabilize, on passe cette commande :
    tcmodinfo -i stabilize

    Pour connaître les paramètres du 2eme filtre appelé transform, on passe cette commande :
    tcmodinfo -i transform

    Tu as aussi accés à la documentation de ces filtres ici :
    http://www.transcoding.org/transcode?Filter_Plugins/Filter_Stabilize
    http://www.transcoding.org/transcode?Filter_Plugins/Filter_Transform

    On fait de même pour tous les autres filtres qui sont aux nombres de 60.
    Un petit rappel, Transcode est connu comme étant le couteau suisse de la vidéo même si cela est moins vrai maintenant qu’à une époque puisqu’il a été dépassé par son « rejeton » FFmpeg. De plus, même si une version 1.17 est sortie recement, il est plus ou moins mort.

    Au plaisir de te lire encore

    Olivier

    @+

  3. Roozeec dit :

    @Cenwen : Merci beaucoup pour ton commentaires et toutes les informations que tu y as ajoutées. J’ai corrigé le lien et apporté un ajout mentionnant tes informations. C’est vrai que les articles se font de plus en plus rare sur ce blog, il faut trouver les idées et le temps de les écrire. Les idées je les récupère au fil de mes surfs sur le net, par exemple cet article m’est venu suite à la visualisation d’un clip vidéo d’un italien en vacances sur la cote de granit rose (http://www.cotedegranitrose.net/2012/03/21/balade-sur-la-cote-de-granit-rose/) où il mentionne la stabilisation de la vidéo.

  4. Cenwen dit :

    @Roozeec

    Je reviens vers cet article et je vais paraître rabat joie à un détail près. Comme je l’avais dis precedement, le filtre de Transcode et de MLT sont différents et donc il y a une erreur dans l’article concernant le 2eme.
    Le 1er filtre (pour Transcode) est réaliser par Georg Martius tandis que le 2ème (pour MLT)est réaliser par Marco Gittler (et amélioré par Dan Dennedy) basé sur le travail d’un autre filtre crée par Kanade-Lucas Tomasi. De plus vstab n’est pas vid.stab même s’il est facile de faire l’erreur, je le reconnais.

    D’ailleurs, Dan Dennedy, le mainteneur actuel du framework vidéo MLT l’indique clairement sur le site : http://mltframework.blogspot.fr/2011/08/image-stabilization-added.html

    C’est un détail,certes, mais qui a son importance. Aussi, c’est pourquoi je me suis permis d’insister (encore !) sur ce point. Et je m’en excuse aussi. Désolé.

    @+

  5. Roozeec dit :

    @Cenwen : J’ai corrigé l’article. Tu as raison d’insister :-)

  6. yeKcim dit :

    Depuis que Blender a des options de tracking il est possible de l’utiliser pour stabiliser l’image d’une vidéo, bon j’avoue que c’est un peu sioux mais c’est faisable… Exemple de tuto ici : http://vimeo.com/25785504

  7. Cenwen dit :

    Un utilisateur de notre forum nous en a informé avec une vielle vidéo. J’ai voulu essayé afin de voir si cela fonctionnait déjà mais vu que la vidéo était sur une vielle version et que je ne suis pas un expert de Blender, (loin s’en faut) j’ai laissé tombé.

    Je vais regarder ça d’un peu plus pret mais si c’est « sioux », ça ne le fera pas.

    Sinon, je suis content que tu sois toujours sur la toile Yekcim (un ancien lecteur de ton blog).

    @+

  8. Cenwen dit :

    Hey ben, je comprends mieux mon vieux tutoriel. Il s’agissait du 1er.

  9. yeKcim dit :

    Apparemment blender pour stabiliser des vidéos, ça semble inspirer du monde : http://www.blendernation.com/2012/06/03/camera-stabilisation-with-blender-2-63/ :P

  10. bpier dit :

    Je m’intéresse depuis peu au montage vidéo sous Linux, suite à l’achat d’une Gopro. Je viens de tomber sur ton blog. Il est super. Bonnes infos. Enfin, pour te rejoindre, les articles se font rares aussi sur le mien, car il faut de nouvelles idées à développer. Mais ce n’est pas important d’en ajouter toujours. L’essentiel, je crois, est d’essayer de tenir à jour les posts que nous avons mis en ligne. ce qui est déjà un très gros boulot dans le monde de Linux, qui évolue très vite. Pierre

Leave a Reply

Propulsé par WordPress


Contrat Creative Commons
Site sous licence Creative Commons Paternité
Partage des Conditions Initiales à l'Identique 2.0 France License
Web Analytics