Création d’un timelapse avec une caméra Dlink 5020

dlink-5020Troisième article concernant ma caméra D-Link DCS-5020L/E Caméra IP Réseau + Répéteur Wi-Fi Blanc.

Le premier article : https://www.pajagus.fr/theblog/materiel/dlink-installation-camera-wifi/

le deuxième : https://www.pajagus.fr/theblog/materiel/configuration-avancee-dlink-5020/

Je vais ici présenter un exemple de configuration qui permet de créer une vidéo type Timelapse avec les images enregistrées par la caméra sur un serveur FTP.

Pour que tout fonctionne correctement vous devez disposer d’un serveur FTP (local ou distant) et du logiciel FFmpeg. La vidéo Timelapse est créée via un script Bash (fonctionne sur Linux et maOS, Windows?).

Configuration FTP

La caméra Dlink est capable d’envoyer par FTP une image à intervalle régulier. Cette configuration se trouve dans l’onglet ‘FTP‘ :

dlink-ftpConfigurez ici votre accès FTP (serveur, port, utilisateur et mot de passe, dossier).

Ensuite vous devez spécifier les jours et horaires de fonctionnement. Il est possible de le faire fonctionner en permanence en cochant ‘Toujours‘.

Pour finir vous indiquez les paramètres liés aux images enregistrées. Dans l’exemple un dossier est créé pour chaque jour sous la forme AAAAMMJJ. Par exemple 20180110 pour le 10 janvier 2018.

Dans ce dossier les images sont enregistrées avec un prefix DCS-5020-XXXX. Avec XXXX = 0001, 0002,…..

Fonction de l’intervalle et de la période vous pouvez obtenir plusieurs milliers de photos !. Dans l’exemple on enregistre une photo toutes les 3 secondes entre 8h00 et 18h00. Cela fait donc 10h x 60m x (60/3) = 12000 images / jour.

NB: Si vous avez un Nas (Synology ou autre) vous avez la possibilité de créer un serveur FTP très facilement.

Création d’une vidéo Timelapse

Avec les 12000 images enregistrées chaque jour nous allons créer une vidéo. La vidéo sera encodée à 25 images/s ce qui nous fera au final une vidéo de 8 minutes.

Voici le script bash

#!/bin/bash

## script création timelapse
## avec image dlink (A dossier par jour)
## 1 => renommage des images 0001, 0002....
## 2 => création vidéo avec FFmpeg, 25i/s 640x480

if [ -z "$1" ]; then
 # YYYYMMDD
 DAY=`date +%Y%m%d`
else
 DAY="$1"
fi
if [ ! -d "/dlink/$DAY" ]; then
 echo "Rien a traiter pour $DAY"
 exit
fi
cd /dlink/$DAY
mkdir vide
## renommage des images 
first=1
for i in `ls *jpg`
do
 SIZE=$(du -s $i | awk '{ print $1 }')
 if ((SIZE>0)) ; then
 new=$(printf "%06d.jpg" "$first")
 mv -i -- "$i" "$new"
 let first=first+1
 else
 mv $i vide/$i
 fi
done
## création vidéo
DEST="/dlink/$DAY-video.mkv"
if [ -f $DEST ]; then
 rm $DEST
fi
ffmpeg -v 0 -r 25 -b 1000k -i "%06d.jpg" -vcodec libx264 $DEST

Utilisation du script dlink.sh  :

Le script s’utilise en tache planifiée (cron) ou manuellement, par défaut il traite les images du jour, mais il est possible de spécifier un jour en particulier : dlink.sh ou dlink.sh 20180110

Fonctionnement

  1. Si un paramètre est indiqué ($1) on traite ce jour la, sinon le script utilise la date courante
  2. On teste ensuite si un dossier correspondant existe (AAAAMMJJ), sinon le script s’arrête
  3. Tous les fichiers images sont ensuite numérotés (0001, 0002…), cela est nécessaire pour que FFmpeg fonctionne correctement.
  4. NB: si un fichier vide est détecté il est déplacé dans un sous-dossier vide pour ne pas bloquer le traitement.
  5. Le traitement est lancé avec FFMpeg, pour encoder une vidéo mkv à 25i/s avec un débit de 1000Ko (qualité).
  6. NB: Si un fichier vidéo avec le même nom existe il est supprimé
  7. NB: l’option -v 0 limite l’affichage d’informations pendant l’encodage.

Au final on obtient un fichier vidéo avec un nom sous la forme : AAAAMMJJ-video.mkv.

Sur mon serveur le script est exécuté tous les jours à 23h15 pour traiter les images du jour.

Voila j’espère que ces trois articles sur l’utilisation d’une caméra IP Dlink DCS5020 vous on plus. N’hésitez pas à me laisser des commentaires ou questions.

 

Pas de Commentaire

Qu'en pensez-vous ?

Votre formulaire contient des erreurs, merci de corriger.