Un timelapse par jour, à raison d'une image toute les 10 secondes de 5:00 à 23:00h,
soit 6480 photos compilées dans une vidéo cadencée à 10 images par seconde.
La journée de 18 heures est donc condensée en une vidéo de 10 minutes.
La compilation et l'upload du timelapse sont généralement terminés vers 4:00 AM.
Les dimensions du timelapse sont de 5120 × 1440 pixels (5K), privilégiez un visionnage plein écran sur un très grand écran.
Les timelapses sont réalisés à l'aide d'une caméra
HikVision 5K - 180° et d'un
Raspberry Pi.
À 23h00, le script ci-dessous assemble les 6480 images en une vidéo cadencée à 10 images par seconde.
L’encodage et la compression sont effectués avec le codec VP9 et le fichier est enregistré
dans un conteneur WebM.
La résolution natives des images (5120×1440 pixels) est conservée durant l'encodage
et le débit vidéo est fixé à 2048 kb/s.
La vidéo terminée est ensuite téléchargée sur le serveur (04:00 AM).
Détail du script :
#!/bin/sh# ===========================================# Script Timelapse Cron-Safe# ===========================================# Définir le HOME pour cronexportHOME=/home/admin# Chemins absolus pour les commandesFIND=/usr/bin/findRM=/bin/rmMV=/bin/mvMKDIR=/bin/mkdirFFMPEG=/usr/bin/ffmpegSCP=/usr/bin/scpDATE=/bin/dateHEAD=/usr/bin/head# DossiersphotosDir="/home/admin/Timelapse/Photos"archivesDir="/home/admin/Timelapse/Archives"remoteDir="/home/clients/**************id host****************"logDir="/home/admin/Timelapse/logs"# Créer le dossier de logs s'il n'existe pas$MKDIR-p"$logDir"LOGFILE="$logDir/timelapse_$($DATE +"%Y-%m-%d").log"exec>>"$LOGFILE"2>&1# Datestoday=$($DATE +"%Y-%m-%d")date7=$($DATE -d "7 days ago" +"%Y-%m-%d")currentDate=$($DATE)START=$($DATE +%s)# timestamp en secondes depuis 1970-01-01echo"======================================================================"echo"Début du script : $currentDate"echo"======================================================================"# ===========================================# Vérifier qu'il y a des photos# ===========================================if[-z"$($FIND "$photosDir" -mindepth 1 | $HEAD -n 1)"];thenecho"Pas de photos ce jour-là. Arrêt du script."exit0fi# ===========================================# Supprimer les fichiers vides# ===========================================$FIND"$photosDir"-typef-size0-exec$RM-f{}\;# ===========================================# Renommer les photos avec 4 chiffres# ===========================================i=1forfin"$photosDir"/*;do[-f"$f"]||continue$MV--"$f""$(printf "%s/%04d.jpg" "$photosDir" "$i")"i=$((i+1))done# ===========================================# Créer la vidéo avec ffmpeg# ===========================================$FFMPEG-framerate10-i"$photosDir/%04d.jpg"-fwebm-vcodeclibvpx-vp9-vb1024k-s5120x1440"$photosDir/$today.webm"# ===========================================# Uploader la vidéo sur le serveur distant# ===========================================$SCP"$photosDir/$today.webm"***********@host***********:"$remoteDir"# ===========================================# Archiver les photos et la vidéo du jour# ===========================================$MKDIR-p"$archivesDir/$today"$MV"$photosDir"/*"$archivesDir/$today"2>/dev/null# ===========================================# Nettoyer le dossier de travail# ===========================================$RM-rf"$photosDir"/*# ===========================================# Supprimer les archives de plus de 7 jours# ===========================================oldDir="$archivesDir/$date7"if[-d"$oldDir"];then$RM-rf"$oldDir"echo"Dossier $oldDir supprimé."fi# ===========================================#Fin du script et durée# ===========================================FIN=$(date '+%Y-%m-%d %H:%M:%S')END=$(date +%s)DURATION=$((END-START))# ===========================================#afficher en hh:mm:ss# ===========================================HOURS=$((DURATION/3600))MINUTES=$(((DURATION%3600)/60))SECONDS=$((DURATION%60))echo"======================================================================"echo"Le script s'est terminé à $FIN"echo"Durée d'exécution : $HOURS h $MINUTES min $SECONDS sec"echo"======================================================================"echo"Script terminé avec succès, il est content."
HISTORIQUE
Novembre 2025
Modification du script afin de garder une copie des photos durant 7 jours
Suppression des photos et des vidéos après 7 jours sur le RaspBerry Pi, archivage des videos en ligne
Ajout d'un utilitaire permettant de retrouver le numéro d'une photo en fonction de l'heure
Juin 2024
Changement de caméra : Image panoramique 4K à 180 degrés (5120 × 1440 pixels)
Changement de la fréquence des prises de vues : une image toute les 10 secondes (toute les minutes auparavant) de 05:00 à 23:00, soit 6480 images sur la période de 18h.
Frame rate du timelapse : de 8 à 24 images/s (à l'essai) pour trouver le meilleur ratio poids/fluidité des vidéos.
Changement de système : le serveur est désormais hébergé au chalet et les timelapses sont générés localement puis envoyés sur le cloud en fin de processus
A faire : supprimer le halo lumineux sur la gauche qui rends visible la jonction des deux caméras formant le 180°.
Mai 2022
La carte SD du Raspberry Pi est pleine, Pas de timelapse du 04/04/2022 au 03/05/2022.
Je vais modifier le scipt afin de ne plus archivers les images.
Mars 2021
La carte SD du raspberry Pi est pleine, je m'en apperçois 15 jours plus tard donc pas de timelapse durant cette quinzaine.
19 décembre 2019
Configuration de la caméra avec la nouvelle @IP, c'est reparti.
Les batteries sont en fin de vie, je ne sais pas si ça tiendra l'hivers.
Affaire à suivre.
27 Octobre 2019
Passage IPv6 à la maison, Free à changé mon IP fixe,
La caméra n'arrive plus à uploader les photos sur le serveur hebergé à la maison.
27 Aout 2019
Les voisins sont arrivés, j'interromps les timeslapse par correction.
25 Fevrier 2019
Nouveaux horaires :
Horaire prise de vue : 06:00 à 20:00 h
Début encodage : 20:05 h
Upload : aux environs de 23 h
15 Fevrier 2019
pas de timelapse du 29 janvier au 14 fevrier
29 Janvier 2019
Les cellules solaire sont sous la neige
batterie vide, plus de jus, plus de timelapse.
27 Novembre 2018
Changement du format d'encodage : webm
Format image : 1280x720
Fréquence prise de vue : 1 image/ minute
Encodage : 24 images/seconde
Horaire prise de vue : de 07:00 à 18:00 h
Premier timelapse
Fréquence prise de vue: 1 image/ minute
Horaire prise de vue : de 07:00 à 18:00 h
Début encodage : 18:05 h
Upload : aux environs de 20 h