Réaliser un timelapse grâce au Raspberry pi et sa caméra

Les amis, j’ai eu la chance de recevoir ce matin la toute nouvelle caméra du Raspberry Pi. Quelques tutoriaux en anglais existes déjà pour vous aider à la mettre en place, comme certains ne sont pas trop amis avec la langue de Shakespeare, je vais refaire ici un tuto en français, fortement inspiré de ceux qu’on peut trouver en anglais.

Le but

Ce tutoriel aura pour but de mettre en place la caméra, puis de l’utiliser pour faire un timelapse en prenant régulièrement des photos pour ensuite les monter sous forme de vidéo une fois installé mencoder.

Pour ce premier tuto, on va donc mettre un peu la domotique et la robotique de coté pour faire joujou et faire un beau timelapse de temps bien moche (car je ne sais pas vous.. mais chez moi, ça donne des jolis mouvement de grosses masses nuageuses bien moches).

Le matériel

Pour une fois, niveau matériel, il va vous falloir bien peu de choses :

  • Un Raspberry Pi
  • Une caméra pour le Raspberry Pi

Et c’est tout ! Héhéhéhé !

Bon par contre, si vous n’avez pas encore la caméra Raspberry Pi, il va vous falloir patienter… J’ai reçu ma caméra commandé chez RS, mais celle que j’ai commandé chez Kubii n’est pas prête d’arriver : ils viennent de m’envoyer un mail pour m’annoncer qu’il y a un délai de 8 semaines avant de recevoir la caméra. Cool non ?

Mise à jour du Raspberry Pi

Avant toute chose, il va vous falloir mettre à jour votre raspbian pour récupérer les derniers pilotes embarqués dans cette distribution.

Pour cela, commencez par exécuter la commande suivante :

sudo apt-get update

Ensuite, mettez à jour :

sudo apt-get upgrade

Ces commandes prennent un peu de temps à être exécuté, quelques minutes par exemple.

Ensuite il n’y a plus qu’à activer la caméra, pour cela on tape la commande suivante :

sudo raspi-config

Ensuite, activez la caméra, et quand on vous propose de rebooter, dites oui !

Dans raspi config, on active la caméra
Dans raspi config, on active la caméra
Et on active :)
Et on active 🙂

Voila pour la partie activation. Maintenant, on va connecter la caméra au Raspberry Pi de manière physique.

Brancher la caméra

La caméra se branche à cet endroit :

C'est ici qu'on branche la caméra
C’est ici qu’on branche la caméra

Tirez délicatement pour déverrouiller  le port Csi, puis insérez le câble de la caméra de manière à ce que la petite partie bleu du câble soit face au port Ethernet.

 

On branche dans ce sens !
On branche dans ce sens !

Toute la connexion est à voir sur cette vidéo de la fondation Raspberry Pi. Pas besoin de parler anglais pour comprendre ce qu’il fait.

Méthode 1 : Via un script

La première méthode est dite : la méthode bourrine. Ma préférée 🙂

On va faire un script qui va tourner en boucle et qui va prendre une photo toutes les X secondes tant que vous ne quittez pas le processus (CTRL+C). On va ensuite utiliser le soft mencoder pour assembler ces images sous forme de vidéo pour obtenir notre timelapse.

On va donc commencer par créer un script qu’on va faire tourner pour prendre régulièrement des photos.

On se crée un dossier pour tout ça :

mkdir /var/www/timelapse/
cd /var/www/timelapse/
mkdir stills

On crée ensuite notre fichier timelapse.sh

cd /var/www/timelapse
nano timelapse.sh

Copiez y le code suivant :

SAVEDIR=/var/www/timelapse
while [ true ]; do
filename=-$(date -u +"%d%m%Y_%H%M-%S").jpg
/opt/vc/bin/raspistill -o $SAVEDIR/$filename
sleep 4;
done;

Ce script va donc sauvegarder une photo toutes les 4 secondes dans le dossier SAVEDIR, en les formatant pour qu’on ait comme nom de la photo, la date à laquelle elle a été prise.

Ce script va tourner tant que vous ne l’arrêterez pas (via un CTRL+C).

Pour le moment, on va se contenter de ce fonctionnement pas super propre. C’est notre premier timelapse, donc on ne va pas trop se prendre la tête. J’indiquerais en fin d’article des solutions pour rendre ça plus propre, voir même pratique.

On va maintenant installer mencoder pour pouvoir encoder les images sous forme de vidéo (très bon logiciel, avec d’énormes capacités, mais qui nécessite de bien lire des exemples et de fouiller la doc).

Pour l’installer, on fait comme d’habitude :

sudo apt-get install mencoder

Confirmez, puis laisser l’installation suivre son cours. Une fois terminée, on va alors lister toutes les images dans un fichier qu’on passera en paramètre à mencoder comme sources.

cd /var/www/timelapse/photos/
ls > ../stills.txt

Vérifiez que ce fichier contienne bien la liste de vos photos (il se trouvera dans le dossier timelapse). Il est maintenant temps de lancer la commande mencoder pour créer la vidéo. Assurez vous que vous êtes dans le dossier des photos, puis lancez la commande suivante :

sudo mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o tlcam.avi -mf type=jpeg:fps=24 mf://@../stills.txt

Je vous invite à aller lire la documentation (vous allez voir, elle est rikiki) pour vous faire une idée des options utilisée. Globalement, cette ligne de commande veut dire : on enregistre sans le son (-nosound), en utilisant les codec mpeg4, au format 16/9, le fichier de sorti s’appellera tlcam.avi, et on prend comme source des fichiers jpeg, qui sont assemblés pour composer une seconde de film au rythme de 24 images / seconde, en utilisant les images listée dans le fichier ../stills.txt.

Facile hein 🙂

Une fois lancé, la commande va afficher quelques chose dans ce genre :

mencoder01
Encodage avec mencoder

Comme vous pouvez le voir, c’est long …. très long. Et pour cause, on atteint là les limites de notre petit Raspberry Pi. 3h de photos à compiler en vidéo, il le fait bien, mais il prend son temps  (1h15 environ dans mon exemple).

Vous n’avez ensuite plus qu’à lire la vidéo !

Voici le timelapse obtenu ce soir du couché de soleil (film est / nord / est). J’ai finalement profité du retour du soleil pour faire une vidéo moins grise. Même si du coup, on a plus de texture dans le ciel, ce qui est bien dommage …

Méthode 2 : Via les options de la raspicam

Mais en fait, on peut faire un peu plus simple ! Si vous avez bien regardé la liste des options disponibles pour l’executable raspistill, vous aurez sans doute remarqué qu’il y a une option -tl (tl pour timelapse ? :p) qui vous permet de préciser la fréquence de prise de vue, et une option -t qui vous permet de préciser la durée totale de la prise de vue.

Donc, si on exécute la commande suivante :

raspistill -o timelapse_%d.jpg -tl 3000 -t 10800000

On va prendre une photo toutes les 3 secondes, sur une durée de 3 heures (3 * 60 * 60 * 1000). Les durées sont exprimées en millisecondes.

Et hop, le tour est joué 🙂

Vous pouvez ensuite assembler la vidéo avec mencoder comme dans la solution 1.

Désactiver cette ***** de led rouge

Si vous faites vos timelapses derrière une vitre (ce qui est mon cas vu le temps pourri), vous allez être confronté à un problème : le reflet de la led rouge dans la glace. Cette led signale qu’une prise est en cours. Alors ça peut être pratique de temps à autre. Mais pour un timelapse, avoir un reflet rouge sur votre vidéo, ça soûle. Heureusement, il est possible de la désactiver 🙂

Éditez le fichier de config via la commande suivante :

sudo nano /boot/config.txt

Puis ajouter la ligne suivante :

disable_camera_led=1

Il est ensuite nécessaire de rebooter :

sudo reboot

Il est aussi possible de gérer cette led via le GPIO 5, je n’ai pas encore testé, mais allez faire un tour sur le blog raspberry pi spy pour plus de détails.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *