Chaine de logiciel libre pour faire un timelapse
Cette semaine j’ai essayé de faire un timelapse avec des logiciels libres sous Linux. Ça m’a fait découvrir ou approfondir un certain nombre d’outils :
gphoto2 | ImageMagic | Luciole | Pitivi | Jyraphe > vidéo webm et Balise vidéo html5
Gphoto2
Gphoto2 est un logiciel en ligne de commande qui permet de piloter un appareil photo via USB. Il fonctionne avec beaucoup de modèle d’appareil Nikon et Canon.
Il permet entre autres, de prendre des photos à intervalle régulier et de les enregistrer directement sur le pc sans passer par la carte mémoire. Pour prendre des photos à 5 minutes intervalle :
-
gphoto2 –capture-image-and-download –interval=300
Toutes les photos seront placées dans le dossier courant.
ImageMagic
Les photos ne sont pas directement utilisables pour faire une vidéo :
- Elles sont trop carrées pour tenir dans les formats HD habituels, comme le 1080p (1920×1080)
- Elles sont trop grosses : 4288×2848 à la sortie de l’appareil. C’est plus grand que le 4K, format retenu pour le cinéma numérique (4096×2160)
L’objectif est de faire une vidéo en 1080p, donc il faut redimensionner les images en 1920×1080. Il est possible de les réduire à une hauteur de 1080px, mais dans ce cas, des bandes noirs apparaîtront sur les bords gauche et droite. J’ai préféré les réduire à une largeur de 1290px, en tronquant le haut et le bas des images, ce qui ne gênait pas dans ce cas.
Pour redimensionner et couper les photos, j’ai utilisé ImageMagic qui fournit un lot de commandes bien pratiques, dont la commande convert :
-
mkdir output
-
for img in `ls *.jpg`
-
do
-
convert $img -thumbnail ‘1920×1080^’ -gravity center -extent 1920×1080 output/$img
-
done
Cela signifie que pour chaque image dans le dossier courant, une miniature donc la taille minimum est 1920px de large ou 1080px de haut est créée, puis l’image est tronquée à une taille de 1920×1080 en centrant l’image. Le résultat est mis sous le même nom dans le dossier output.
J’ai remarqué plus tard que j’aurais dû utiliser -resize au lieu de -thumbnail. Le résultat est le même si ce n’est que -resize optimise la qualité alors que -thumbnail optimise le poids de l’image.
Luciole
Luciole est un logiciel qui permet de d’agrégé une séquence d’image en une vidéo, pour faire du stop motion.

Luciole permet de manière très simple d’ajouter des images, de choisir un nombre d’images par seconde et d’exporter. Malheureusement, les réglages d’exportation en vidéo sont assez pauvres et je n’ai pas réussi à avoir une sortie d’une qualité suffisante (par exemple, 720×576 au max).
Heureusement, Luciole propose aussi d’exporter dans des formats de projets pour 3 logiciels de montages vidéo pour Linux : cinnelera, kdenlive et pitivi.
Je voulais utiliser pitivi parce que je l’ai déjà testé et je voulais voir de quoi il était capable. Cependant, le fichier de projet pitivi généré par Luciole avait quelques erreurs: les durées des images était beaucoup trop longue (0.5 seconde au lieu de 0.08 pour du 12,5 images par seconde).
J’ai du corriger le bug pour continuer : diff
Pitivi
Pitivi est un logiciel de montage vidéo assez récent, ne disposant pas de beaucoup de fonctionnalités, mais qui a l’avantage de bien marcher.

Un fois le projet généré par luciole corrigé, il n’y a plus qu’à exporter, en choisissant le format d’image (1080p) et le format d’encodage : webm
J’obtiens alors une vidéo de 1,1Mo pour environ 1Go de photos !
Jyraphe
Pour éviter d’utiliser des systèmes de stockage de vidéo centralisé comme Youtube. J’ai placé la vidéo en webm sur le serveur b219 (ici)
Malheureusement, Firefox 4 est incapable de la lire correctement (contrairement à Chrome), parce que le Content-Type annoncé est faux : text/plain à la place de video/webm.
Du coup on obtient ceci :
(Les utilisateurs de Chrome devront imaginer qu’il y a un lecteur video vide avec une croix sombre)
J’ai essayé une autre source d’hébergement : le service Jyraphe de b219.org. Jyraphe est un équivalent de dl.free.fr que l’on peut installer sur son propre serveur.
Les vidéos uploadées sur jyraphe affichaient un autre Content Type, mais toujours pas le bon : application/x-extension-webm
Pour réussir à faire marcher les vidéos sur Firefox, j’ai patché Jyraphe afin de corriger ce Content Type en particulier :
-
function jyraphe_map_mime($mime) {
-
if($mime == "application/x-extension-webm") {
-
return "video/webm";
-
}
-
return $mime;
-
}
et
à la place de :
Balise video html5
Et pour finir, la balise vidéo du HTML5 permet de publier cet vidéo en webm.
Voici le résultat :
La vidéo est en 1920×1080, j’ai limité la largeur à 800px pour le blog, mais en la téléchargeant, elle serait bien plus grande : La vidéo en grand
Conclusion
L’utilisation de tout ses outils peut paraître laborieuse, mais elle permet d’obtenir exactement le résultat souhaité. En étant moins exigeant (sur les bandes noires ou les formats de sortie par exemple) il est possible d’aller beaucoup plus vite. D’autre part, le plus long a été de trouver et corriger les logiciels, d’affiner les réglages et corriger quelques bugs. Maintenant que cela est fait, les vidéos suivantes devraient être bien plus rapides à faire.
La deuxième partie de la vidéo a été faite avant, sans gphoto2, et l’appui sur le bouton suffit à faire fortement bouger l’appareil photo. Par contre, alors qu’il ne consomme presque rien en prenant une photo régulièrement manuellement, les batteries de l’appareil photo (un D90) se vide très vite (6 heures) lorsque celui-ci est branché par USB au pc. Il va être nécessaire de trouver une alimentation secteur pour faire de plus longues vidéos.