Prise de photos et création d’une vidéo accélérée grâce au RaspBerry Pi et son module caméra
Comme d’habitude, un peu de blabla pour commencer. Les plus pressé(e)s peuvent aller directement à l’essentiel de l’article ci-dessous. 😉
Suite à l’acquisition d’un module Caméra pour RaspBerry Pi, je suis parti dans divers tests.
J’ai toujours voulu faire du TimeLapse (vidéo accélérée) et … après diverses recherches … ben … Pfff …
Pas facile a priori !
Pourquoi ?
Et bien tout simplement parce que tous les sites qui parlent du TimeLapse sur RaspBerry Pi évoquent mencoder.
Et alors ?!? Me direz-vous. Oùksétikilè le problème ???
Comme pour l’article Surveillance avec RaspBerry Pi, c’est donc ce manque de mencoder dans les dépôts de Jessie qui m’a obligé à chercher.
Résultat ?
En fait, actuellement (octobre/novembre 2016), il faut utiliser « avconv » en installant « libav-tools ».
Bon voilà, c’est tout, problème réglé. Salut, à la prochaine ! 😀
Non, je rigole.
– Comme on ne trouve rien de facile (ou alors j’ai mal cherché, possible).
– Comme on le sait déjà, je suis hyper sympa [pas de « ou alors » ici ;-)]
–> Et bien, je vais faire un article afin de laisser une trace pour vous et pour moi (je ne suis pas informaticien, alors sans notes … Je ne suis rien).
Allez, on voit cela ci-dessous dans le détail.
Tout ce qui suit a été réalisé sur un RaspBerry Pi3 (Merci Karen A pour le cadeau) qui tourne sous RaspBian Jessie + le « DIYmall Module Caméra Raspberry Pi » (14,42 Euros sur Amazon).
Je bosse en ssh depuis mon Mac Mini et/ou un vieux PC portable de récup (merci Christophe T) qui tourne sous Linux Mint.
Réalisation des images
Pour commencer, on va créer un dossier spécifique :
mkdir /home/pi/timelapse
Ensuite, on bascule dans ledit dossier :
cd /home/pi/timelapse
Et il ne reste plus qu’à lancer la commande de prise de photos :
raspistill -o timelapse_%05d.jpg -tl 60000 -t 7200000
Explications basiques :
raspistill
: commande pour prendre les photos
-o
: défini le nom du fichier à créer
timelapse
: nom dudit fichier (ou « image » ou « ce_que_vous_voulez »)
_%05d.jpg
: impose une valeur à 5 décimales accolée au nom du fichier afin de les classer dans l’ordre. (Je ne commente pas le « .jpg » 😉 Si ???)
-tl 60000
: Une photo chaque minute (valeur exprimée en ms donc 60*1000)
-t 7200000
: Durée de prise de vues = 2 heures (2*60*60*1000 ms) pour commencer les tests
Pour les « très très pressés », on peut coller une image toutes les 10 secondes pendant 10 minutes (donc 61 images car de 00000 à 00060) :
raspistill -o timelapse_%05d.jpg -tl 10000 -t 600000
On laisse tourner et on se retrouve avec quelques images 🙂
Ajout du 01/04/2019 : sur un forum, une personne a eu des soucis car la commande plantait après un certains nombres de photos.
On avait ce type d’erreur : mmal: Frame 9 is 1529 ms late
mmal: Frame 161 is 776 ms late
mmal: Skipping frame 373 to restart at frame -28093008
D’autres fois, les photos s’arrêtaient sans plantage de raspistill (le processus était toujours actif, mais les clichés n’étaient plus pris).
Finalement, j’ai trouvé la solution : il faut faire une mise à jour du firmware avec sudo rpi-update
Mais lisez plutôt cet article sur epingle.info
Bon, la suite.
Réalisation de la vidéo
On installe libav-tools à la place de l’ancien mencoder
sudo apt-get -y install libav-tools
Il ne reste plus qu’à lancer l’encodage des images dans une vidéo :
avconv -r 10 -i timelapse_%05d.jpg -r 10 -vcodec libx264 -crf 20 -g 15 timelapse_jj-mm-aaaa.mp4
Et, après un moment, on récupère la vidéo et on admire le résultat … et … éventuellement … les erreurs genre exposition foireuse, lumière qui s’allume dans la pièce, reflet de la LED rouge*, caméra déplacée par autrui, … Merci d’être indulgents 😉
Si vous bossez en ssh, pour récupérer la vidéo sur votre PC, faites une déconnexion avec :
exit
Puis lancer la commande cp en ssh (à adapter à votre cas) :
scp pi@192.168.0.19:/home/pi/timelapse/timelapse_jj-mm-aaaa.mp4 /Users/alban/Desktop/TEST
Ce qui donne, sur mon Mac Mini :
pi@raspberrypi:~/timelapse $ exit déconnexion Connection to 192.168.0.19 closed. Mac-mini-de-Alban:~ alban$ scp pi@192.168.0.19:/home/pi/timelapse/timelapse_02-11*.mp4 /Users/alban/Desktop/TEST pi@192.168.0.19's password: timelapse_02-11-2016.mp4 100% 165MB 11.0MB/s 00:15 Mac-mini-de-Alban:~ alban$
Résultat
Voici, humblement, mes 2 vidéos de test. Ces vidéos sont évidemment très réduites (au quart de leur taille d’origine) ; de 2592×1944 elles ont été réduites à 648×486 avec HandBrake (Linux Power oblige).
En exemple, la première vidéo réalisée hier
Avec 1 image toutes les 60 secondes durant 3 heures (301 images):
TimeLapse 30 secondes Raspberry Pi
Erreur =
je ne vise pas assez le ciel, mais on voit le flux du temps qui passe tout de même
Merci les ombres 😉
Et, en bonux extra, la seconde vidéo réalisée aujourd’hui sur près de 12h avec 1 image toutes les 90 secondes (456 images) :
TimeLapse 46 secondes Raspberry Pi
Cette fois, j’ai tenté de viser une plus grande partie céleste (pour voir les passages nuageux), mais, pas de bol, au début, c’est plutôt couvert ; soyez un peu patient(s) 😉
Edit du 03/11/2016 :
Un dernier pour la route.
Même cadre que le précédent, sur près de 12h avec 1 photo chaque minute soit 671 photos.
Il faisait assez beau avec passages de nuages, changement de lumière. Sympa ! 🙂
Rajout du 11/11/2016.
Test avec la PiCam penchée (pour mieux voir le ciel et moins la route) en faisant 1 photo toutes les 10 secondes.
Je n’ai que 508 photos, ce qui donne un TimeLapse de 51 secondes
La danse des nuages est amusante ; mais le nombre d’images/minute dépend aussi de la vitesse du vent … et moi … je fais au pif … :-s
A noter que malgré mes RasPiLego et autres techniques pour masquer les LED de fonctionnement (j’avais déjà désactivé la LED*), je trouve qu’il persiste un halo rouge en milieu d’image.
Causé par le double vitrage ?
Il va falloir que je teste en mettant le RaspBerry Pi dehors et/ou en faisant des images en intérieur.
* : Dans mon cas, nécessité de désactiver la LED car reflet sur la vitre puisque pour le moment, je suis derrière la fenêtre de la chambre du n°4 donc halo visible selon le soleil, …
Éditer le fichier de configuration :
sudo nano /boot/config.txt
Puis ajouter cette ligne à la fin du fichier :
disable_camera_led=1
Et voilà !
En cas de besoin, comme d’habitude, vous pouvez m’écrire directement via le formulaire de contact.
P.S. : si vous voulez faire des photos ou des vidéos (et même du Time Lapse) sans vous embêter avec le codage … Voici un Générateur de Ligne de Commande pour la RaspiCam.
Edit du 10/11/2016 :
Pour le fun, voilà le RaspiLego réalisé à l’arrach’ ce matin pour tenir la RaspiCam tout en cachant les LED car même sans la LED de caméra, j’avais un halo rougeâtre sur les vidéos (je soupçonne les LED de fonctionnement d’en être la cause).
Bon, du coup, je crois que je vais jouer à en faire d’autres 😉
Nouvel Edit du 11/11/2016 :
Avec l’application RasPi Check, j’ai constaté que mon gentil RaspBerry Pi 3 affichait 83,8°C lors de la création de la vidéo.
Il est vrai que le RaspBerry Pi 3 est plus véloce que les modèles précédents … Mais … Purée, ça chauffe ! Même avec les dissipateurs thermiques, ça fait peur.
Du coup, j’ai bien été obligé de profiter de ce jour férié pour refaire un autre RasPiLego histoire de pouvoir y coller un ventilo de récup (ou un ventirad plutôt) ce qui a bien fait tomber la Température du RaspBerry.
Voici des images :
Edit du 22/01/2017
Pour ma page traitant du transfert automatique de clichés vers serveur FTP, j’ai testé une fonction sympa de ImageMagick : transformer un lot d’image en fichier GIF pour en faire un fichier GIF animé.
Voilà le résultat :
Ok, Ok, les habités de la chose ou les photographes pourront se moquer de la piètre qualité de mes réalisations, mais je reste (à tout jamais) un gamin de 16 ans et 1/2 et donc :
- J’aime jouer.
- Je m’évermeille des possibilités de la ligne de commande.
- Je m’épate moi-même (mais, faut dire, y a de quoi ; non ?!? 😉 Si.)
A bientôt,
Rétroliens : RaspiLego – un boitier en LEGO® pour RaspBerry Pi – TREVILLY.COM
Rétroliens : Ventilateur pour RaspBerry Pi3 – TREVILLY.COM