DNS / DHCP / Nagios / Gammu / Asterisk / MusicPlayerDaemon / Arduino RaspberryPI / OpenVPN | Créer son image pour Raspberry PI | DJI Fade | Reolink Timelapse | K8S on Raspberry Pi
L’objectif est de programmer la récupération d’un snapshoot tous les jours en haute résolution depuis une camera Reolink en lui demandant de se positionner à differents endroits mémorisés par le PTZ, puis de créer une video de type timelapse avec ffmpeg
Il faut avoir définit des positions enregistrées dans la configuration de la caméra Reolink, ensuite il est possible de demander à la caméra de se positionner en utilisant la commande PtzCtrl depuis un curl.
$> curl -v -k -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
"https://W.X.Y.Z/cgi-bin/api.cgi?cmd=PtzCtrl&user=USER&password=PASSWORD" \
-d '[{"cmd":"PtzCtrl","action":0,"param":{"channel":0,"op":"ToPos","speed":32,"id":5}}]'Remplacer W.X.Y.Z par l’ip de la caméra Reolink Remplacer USER par le login sur la caméra Reolink. Remplacer PASSWORD par le Password sur la caméra Reolink.
Ici la position demandé est celle de l’id dans le payload JSON : 5
$> curl -v -k \
"https://W.X.Y.Z/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=abc123&user=USER&password=PASSWORD" \
--output foo.jpgPour chaque caméra j’utilise la regle suivante pour nommer les snaps :
Par exemple je vais avoir pour la caméra foin, les fichiers :
$> $ ls -l foin_snap_1_??_04*
-rw-rw-r-- 1 ptro ptro 1520197 avril 1 18:07 foin_snap_1_01_04_2023-18:07:27.jpg
-rw-rw-r-- 1 ptro ptro 1663158 avril 2 14:03 foin_snap_1_02_04_2023-14:03:47.jpg
-rw-rw-r-- 1 ptro ptro 1714644 avril 3 14:05 foin_snap_1_03_04_2023-14:05:08.jpg
-rw-rw-r-- 1 ptro ptro 2042921 avril 4 14:06 foin_snap_1_04_04_2023-14:06:29.jpg###
# foin_snap_1
index=1
for fich in `ls -t -r foin_snap_1_*`
do
echo "cp ${fich} timelapse_${index}.jpg"
cp ${fich} timelapse_${index}.jpg
index=`expr $index + 1`
done
rm -f foin_1.mp4
echo "build foin_1.mpg"
ffmpeg -framerate 2 -i "timelapse_%d.jpg" -s:v 3840x2160 -c:v libx264 -crf 17 -pix_fmt yuv420p foin_1.mp4
rm timelapse_*.jpg
#
###Le script commence par aller chercher tous les fichiers correspondant au flux foin_snap_1, et il les ordonne par date inverse avec les options -t -r, pour générer des fichiers respectant le nommage timelapse_1.jpg, timelapse_2.jpg … timelapse_n.jpg. Ensuite la commande ffmpeg est utilisée pour générer le timelapse, en utilisant la pattern timelapse_%d.jpg les captures sont ainsi bien ordonnées.
$> ffmpeg -i foin_1.mp4 -i foin_2.mp4 -i cabane_1.mp4 -i cabane_2.mp4 \
-filter_complex "nullsrc=size=3840x2160 [base]; \
[0:v] setpts=PTS-STARTPTS, scale=1920x1080 [upperleft]; \
[1:v] setpts=PTS-STARTPTS, scale=1920x1080 [upperright]; \
[2:v] setpts=PTS-STARTPTS, scale=1920x1080 [lowerleft]; \
[3:v] setpts=PTS-STARTPTS, scale=1920x1080 [lowerright]; \
[base][upperleft] overlay=shortest=1 [tmp1]; \
[tmp1][upperright] \
overlay=shortest=1:x=1920 [tmp2]; \
[tmp2][lowerleft] overlay=shortest=1:y=1080 [tmp3]; \
[tmp3][lowerright] overlay=shortest=1:x=1920:y=1080" \
-c:v libx264 output.mkvDNS / DHCP / Nagios / Gammu / Asterisk / MusicPlayerDaemon / Arduino RaspberryPI / OpenVPN | Créer son image pour Raspberry PI | DJI Fade | Reolink Timelapse | K8S on Raspberry Pi