Il y a quelques temps, j’ai du filmer un écran pendant un long moment, plusieurs heures; comme il n’allait rien s’y passer pendant la majeure partie du temps, utiliser une application qui allait prendre plusieurs images par seconde n’était pas envisageable, car le fichier de sortie aurait rapidement atteint une taille trop grosse. De plus, j’avais juste besoin de voir en gros les moments où il y aurait de l’activité donc je n’avais pas besoin d’une telle précision. Une précision de l’ordre de la seconde suffisait largement.
J’ai donc opté pour un script shell, qui faisait une capture d’image par seconde, que j’ai ensuite assemblée, à une vitesse supérieure (plusieurs images par secondes). On appelle ce genre de vidéo un timelapse.
Divers articles m’ont aidé, mais c’est finalement celui-ci que j’ai mis en oeuvre car il est simple. Le processus est assez facile à reproduire sur une Ubuntu.
On commence récupérer les deux packages que l’on va utiliser, pour faire les captures puis l’assemblage :
<codelang=”bash”>$ apt-get install scrot mplayer</code>
Pour faire les captures d’écran, on écrit le script shell suivant, qu’on lance et qu’on laisse tourner :
#!/bin/sh<br />
while [ 1 ]; do scrot -q 100 $(date +%Y%m%d%H%M%S).jpg; sleep 1; done
Ce script prend une capture toute les secondes, et sauvegarde dans un fichier JPEG dont le nom correspond à la date formattée.
Une fois la capture terminée, on arrête le script et on liste les fichiers images dans un fichier, du plus récent au plus ancien :
$ ls -1tr *.jpg > files.txt
C’est l’occasion de découvrir de nouveaux paramètres pour ls !
-1 permet d’avoir un nom de fichier par ligne (attention, c’est le chiffre « un », pas la lettre « l »)
-t trie les fichiers par date de modification
-r inverse l’ordre des fichiers
On assemble enfin les images avec mencoder, à raison de 20 images par secondes. Vous pouvez ou non ajouter un fichier mp3 directement pendant l’assemblage :
$ mencoder -ovc x264 -oac mp3lame -audiofile basket_case.mp3 -mf w=1400:h=900:fps=20:type=jpg 'mf://@files.txt' -o screenlapse.avi
Et voila. Prochaine utilisation de ce script lors de ma participation à une future Ludum Dare, peut être la 32ème ? Les timelapse de participants y sont monnaie courante.