Automatiser la création d’aperçus vidéo avec VLC

Voilà un post que je voulais faire depuis quelques temps.
Les articles de mes blogs ont vocation à la fois à aider les autres qui plancheraient sur des problèmes que j’ai déjà rencontrés, mais aussi à me servir de rappel, des fois que j’aie oublié comment j’ai solutionné tel ou tel truc.

Il existe pas mal de logiciels qui permettent de visualiser une vidéo image par image. Bien souvent, ce sont des logiciels de montage vidéo. Il est cependant rare que ceux-ci soient portables d’un système d’exploitation à l’autre. Par ailleurs, ils sont rarement optimisés pour la simple création d’aperçus. Ou alors, il ne faut pas vouloir en faire 50.

Il existe aussi 3 solutions qui vous permettent d’extraire des images d’une vidéo.
La première, c’est VirtualDub, avec son option d’export de séquence d’images. Vous sélectionnez votre scène, vous allez dans Fichier > Export Image Sequence, et votre scène va être décomposée en images qui seront sauvegardées dans un répertoire. Malheureusement, VirtualDub est un logiciel qui tourne seulement sur Windows. On peut bien sîur bricoler pour essayer de le faire tourner sur Linux, mais il y a sans doute plus simple. Dans le même genre, il y a AviDemux. Mais l’extraction d’aperçus est moins bonne qu’avec VirtualDub.

Une deuxième solution, c’est FFmpeg. Je ne vais pas la documenter ici. Je ne la trouve pas géniale dans la mesure où elle ne considère que le temps comme paramètre. En gros, vous pouvez générer une image toutes les secondes, toutes les minutes, etc. Mais quand vous voulez extraire plusieurs images par seconde, et bien, là, je n’ai pas trouvé comment faire.

Reste enfin VLC.
Je ne vais pas parler ici de la capture (snapshot) manuelle. Je préfère me focaliser sur l’extraction par lot.

Tout comme FFmpeg, VLC tourne sur plusieurs plate-formes (Windows, Linux, Mac…). Et on peut choisir la périodicité des aperçus de manière très fine. On touche vraiment à la notion de frame (25 par seconde en général, c’est le FPS). Il est possible d’utiliser l’extraction d’images de 2 manières : en mode graphique, et en ligne de commande.

Pour l’approche utilisant l’interface graphique, je vous renvoie à cet article. Il est en anglais, mais il est aussi accompagné de capture d’écrans. Attention, celle-ci nécessite de modiier vos préférences. Pour revenir en mode normal, vous devrez rétablir vos anciennes préférences.

Voyons maintenant l’option en ligne de commande.

vlc fichier-video --video-filter=scene --vout=dummy --scene-ratio=10 --scene-prefix=$DIR --scene-path=$ROOT/previews/$DIR/ vlc://quit

Sous Windows, remplacez vlc par le-chemin-de-vlc/vlc.exe.
Détaillons les différents paramètres.

  • fichier-video> : le fichier dont on veut extraire des images.
  • –video-filter=scene : on veut extraire des images.
  • –vout=dummy : on ne veut pas jouer la vidéo pendant que VLC réalise les aperçus.
  • –scene-ratio=10 : on veut sauvegarder un aperçu toutes les 10 frames.
  • –scene-prefix=$DIR : remplacez $DIR par le nom à utiliser pour vos images.
  • –scene-path=… : le chemin où sauvegarder vos images.
  • vlc://quit : cela indique à VLC de se fermer après qu’il ait réalisé les aperçus.

Les images générées le seront au format PNG, avec une très bonne qualité.
Ce format est préférable au JPG, qui rend moins bien avec VLC. Il vaut alors mieux réencoder vos PNG en JPG via une autre solution si vous voulez impérativement du JPG.

J’ai aussi publié un Gist illustrant l’utilisation de cette fonctionnalité dans un script Linux.
Voir ici : https://gist.github.com/vincent-zurczak/7647e60f63dd134d2172

Faire des tutoriels vidéos avec VLC

Vendredi 7 octobre. 12h40. On m’appelle pour me demander un tutoriel vidéo, tutoriel qui pourrait servir d’anti-sèche bientôt.

Ce n’est pas la première fois que j’ai à faire des tutoriels. Ce qui m’embête, c’est l’aspect vidéo. Avant, j’utilisais Wink pour faire des démos. Sauf que partager du flash, par mail ou sur des sites de vidéos, tels que Vimeo ou Youtube, ce n’est pas génial. A cause de cet appel, j’ai dû me replonger dans cette jungle, pour finalement (re)découvrir que VLC Media Player pouvait vous aider à enregistrer ce qui passe sur votre écran.

Voilà comment faire.
Vous lancez VLC et vous aller dans Média > Convertir / Enregistrer.
Vous allez ensuite dans Périphériques de capture.

Dans le mode de capture, vous choisissez Bureau.
Dans les options, je vous suggère de mettre 24 ips (images par seconde). Moins, votre vidéo sera lue très vite. Plus, ce sera un ralenti. Enfin, en bas, vous cliquez sur Convertir / Sauvegarder.

Il vous faut ensuite indiquer le fichier de sortie pour la vidéo (dans quoi vous enregistrez).


Appuyez donc sur Parcourir, sélectionnez le dossier de destination et le nom du fichier. N’oubliez pas de préciser l’extension du fichier. Dans mon cas, j’essaye avec du mp4. Puis cliquez sur Enregistrer.

Au retour, vous pouvez configurer les codecs utilisés.

Voilà, vous êtes prêt !
Il vous suffit de cliquer sur Démarrer pour commencer la capture.

Pour l’arrêter, allez dans Lecture > Stop.

Petit conseil…
Aujourd’hui, j’étais en mode « débordé » et j’ai par défaut utilisé du mp4 avec codec H.264. Sauf que l’encodage en H.264 est super gourmand en ressources. Et ce n’est pas un codec facile à manipuler ensuite. Aussi, je vous conseille plutôt d’enregistrer en mpg (avec codec mpeg-II), qui est un format plus facile à éditer. Vous pourrez ensuite faire du montage linéaire (ou non-linéaire), rajouter des commentaires audio, etc. Après, libre à vous de compresser le résultat final (après édition) ou de l’envoyer sur un site de partage.

Pour info, j’ai VLC 1.1.5, sous Windows 7.
Mais ça doit marcher sur toutes les plateformes…