Voici une méthode pour décomposer une vidéo en images fixes (png ou jpeg). On peut s'en servir également pour reconstituer une sorte de synopsis à partir d'une séquence, en extrayant une image selon une fréquence donnée...

Pour obtenir notre séquence d'image, on utilise ffmpeg, le couteau suisse de la conversion audio-video, utilisable en ligne de commande. Un truc bien pratique pour utiliser ce type d'utilitaire est d'installer cmdhere.exe téléchargeable parmi les powertoys du site de microsoft. Une fois installé, le choix "open command window here" est ajouté au menu contextuel des dossiers. Un autre truc à retenir, c'est qu'on peut rappeler les dernières commandes tapées, en utilisant la "fléche haut", ce qui évite de retaper les mêmes lignes ou presque en faisant des essais et même faire un copier-coller avec le bouton droit de la souris (ctrl-v ne marchera pas)

Pour cet exemple, une fois téléchargé et décompressé ffmpeg, on copie les fichiers dans notre répertoire de travail "C:\video", avec la vidéo, c'est la aussi que nous placerons les images extraites. Ensuite on ouvre une fenêtre de commandes dans ce répertoire

ffmpeg est capable de traiter un nombre de formats différents pour en avoir la liste il faut taper :

ffmpeg -formats

Pour extraire toutes les images de la vidéo dans le répertoire

ffmpeg -i video.avi -r 25 -f image2 "test-%4d.png"

-i : indique le fichier de départ (input file), le nom du fichier suit
-r : taux d'images par secondes (ici 25)
-f : forcer le format de sortie (sequence d'image)
puis le nom du fichier de sortie, l'expression '%04d' signifie que les fichiers seront enregistrés avec 4 chiffres croissants (sous la forme test-0001.png, test-0002.png, test-0003.png, etc.)

On peut avoir la liste des commandes de ffmpeg en tapant

ffmpeg -h

Pour extraire une image à un moment précis, on utilisera

ffmpeg -i video.avi -an -ss 00:00:03 -r 1 -vframes 1 -s 400×300 -f mjpeg -y image.jpg

Le temps est exprimé sous la forme HH:MM:SS.XXX, ou XXX représente les millisecondes Voila, c'est très rapide (une fois digérée l'utilisation de la ligne de commande!), ici l'export se fait en png car l'export jpeg en série donne des résultats bizarres (la qualité diminue au fur et à mesure), je n'ai pas trouvé pour l'instant d'explication à ce problème. Le poids des fichiers png peut poser problème selon la taille de la vidéo. On peut les traiter tous en lot, en utilisant irfanview par exemple (voir le billet concernant le traitement par lot d'images)

ffmpeg : site officiel de ffmpeg, documentation, on peut télécharger la version précompilée pour windows ici : ffmpeg pour windows

Dans le tutoriel sur chuck, il y a les infos pour débuter avec la ligne de commande, je vous invite à y jeter un oeil, si cela vous paraît obscur... N'hésitez pas à me poser des questions, j'essaierais d'y répondre...

L'inverse est également possible : créer une vidéo à partir d'images


Si cet article vous a été utile, aidez à le faire connaître en deux clics : en lui ajoutant une "mark" sur tutmarks (en cliquant sur le chiffre dans le rond bleu!)