Introduction

On appelle timelapse un effet d'ultra-accéléré obtenue en prenant des photos à intervalles réguliers sur une longue durée de temps puis en les rassemblant au format vidéo.
Pour réaliser un timelapse, nous allons ici utiliser un script bash pour prendre des photos depuis un raspberry pi, puis les rassembler au format vidéo.

On se servira du package mencoder installé comme suit sous Debian :

sudo apt-get install mencoder

Explication

D'abord, nous allons nous connecter en ssh au pi utilisé, puis prendre les photos :

#!/bin/sh
 
DATE=$(date +"%Y-%m-%d_%H%M")
 
echo "Connecting..."
# Connecting to remote raspberry and running Startup script.
cat Startup.sh | ssh pi@10.3.141.126 sh

On ouvre la connexion ssh et on exécute le script Startup.sh suivant, situé dans le répertoire local :

#!/bin/sh
echo "Running timelapse..."
mkdir temp_timelapse
echo "Taking photos..."
raspistill -vf -hf -t 480000 -tl 1500 -o temp_timelapse/lapse%04d.jpg
exit

L'option -tl de raspistill permet de prendre des photos à intervalles réguliers. Le premier nombre correspond à la durée totale du timelapse, le second à l'intervalle entre 2 images.
On notera qu'un intervalle inférieur à 1500 aura tendance à causer des pertes, raspistill n'arrivant pas à prendre les photos assez vite.

Une fois les photos prises, on peut les récupérer :

echo "Importing pictures..."
rsync -avz --ignore-existing --remove-source-files pi@10.3.141.126:~/temp_timelapse ~/BE

On récupère alors une liste de tous les fichiers importés, puis on se sert du package mencoder pour pouvoir générer un fichier vidéo :

echo "Building video file..."
# Listing all existing pictures
ls ~/BE/temp_timelapse/*.jpg > stills.txt
mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o timelapse_$DATE.avi -mf type=jpeg:fps=24 mf://@stills.txt

Finalement, on se débarasse des fichiers et dossiers temporaires :

echo "Done. Cleaning up..."
# Removing pictures and directory
rm -R temp_timelapse
ssh pi@10.3.141.126 'rmdir temp_timelapse'

On se retrouve alors seulement avec le fichier vidéo voulu.