summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2024-05-28 21:11:37 +0200
committerAnton Luka Šijanec <anton@sijanec.eu>2024-05-28 21:11:37 +0200
commit1fd985486ecae1184c8f868bd3818a127d72ebe7 (patch)
treeb8244edae59bf1e229ec53f648ed93cdaa23a438
parentladn8 (diff)
downloadr-1fd985486ecae1184c8f868bd3818a127d72ebe7.tar
r-1fd985486ecae1184c8f868bd3818a127d72ebe7.tar.gz
r-1fd985486ecae1184c8f868bd3818a127d72ebe7.tar.bz2
r-1fd985486ecae1184c8f868bd3818a127d72ebe7.tar.lz
r-1fd985486ecae1184c8f868bd3818a127d72ebe7.tar.xz
r-1fd985486ecae1184c8f868bd3818a127d72ebe7.tar.zst
r-1fd985486ecae1184c8f868bd3818a127d72ebe7.zip
-rwxr-xr-xskripti/videonadzor.sh100
1 files changed, 100 insertions, 0 deletions
diff --git a/skripti/videonadzor.sh b/skripti/videonadzor.sh
new file mode 100755
index 0000000..3e6fa51
--- /dev/null
+++ b/skripti/videonadzor.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+# SKRIPT za snemanje kamere, katere firmware je example arduino sketch za ESP32CAM CameraWebServer
+# Neprestano zahteva JPEGe na /capture endpointu
+# Vsako minuto iz JPEGov naredi MKV in nato JPEGe izbriše
+# Vsako uro naredi iz MKVjev MP4 in nato MKVje izbriše
+set -uo pipefail
+q=4
+since=0
+rm -f concat.txt
+curl --no-progress-meter "$1/control?var=framesize&val=13"
+while :
+do
+ curl --no-progress-meter "$1/control?var=quality&val=$q"
+ t=`date --utc --iso-8601=ns | cut -d+ -f1`
+ oldstart=`ls --sort=time | grep jpeg$ | tail -n1 | cut -d: -f1,2`
+ if [ ! $oldstart = `cut -d: -f1,2 <<<"$t"` ] && [ ! -f concat.txt ]
+ then
+ echo "ffconcat version 1.0" > concat.txt
+ prev=devica
+ first=ERROR
+ for i in $oldstart:*.jpeg konec
+ do
+ if [ $prev = devica ]
+ then
+ first=$i
+ prev=$i
+ continue
+ fi
+ echo "file 'file:$prev'" >> concat.txt
+ if [ ! $i = konec ]
+ then
+ echo "duration 0`dc <<<"10k$(date --utc --date $(rev <<<"$i" | cut -d. -f2- | rev) +%s.%N) $(date --utc --date $(rev <<<"$prev" | cut -d. -f2- | rev) +%s.%N)"-p`" >> concat.txt
+ else
+ echo "duration 1" >> concat.txt
+ fi
+ prev=$i
+ done
+ {
+ ffmpeg -f concat -safe 0 -i concat.txt -fps_mode vfr file:$first.mkv
+ if [ -s $first.mkv ]
+ then
+ while read line
+ do
+ grep ^file <<<$line > /dev/null && rm `cut -d: -f2- <<<$line | cut -d\' -f1`
+ done < concat.txt
+ fi
+ oldstart=`ls --sort=time | grep mkv$ | tail -f1 | cut -d: -f1`
+ if [ ! $oldstart = `cut -d: -f1` <<<"$t" ]
+ then
+ echo "ffconcat version 1.0" > concat.txt
+ prev=devica
+ for i in $oldstart:*.mkv konec
+ do
+ if [ $prev = devica ]
+ then
+ prev=$i
+ continue
+ fi
+ echo "file 'file:$prev'" >> concat.txt
+ if [ ! $i = konec ]
+ then
+ echo "duration 0`dc <<<"10k$(date --utc --date $(rev <<<"$i" | cut -d. -f2- | rev) +%s.%N) $(date --utc --date $(rev <<<"$prev" | cut -d. -f2- | rev) +%s.%N)"-p`" >> concat.txt
+ fi
+ prev=$i
+ done
+ ffmpeg -f concat -safe 0 -i concat.txt -fps_mode vfr file:$oldstart.mp4
+ if [ -s $oldstart.mp4 ]
+ then
+ while read line
+ do
+ grep ^file <<<$line > /dev/null && rm `cut -d: -f2- <<<$line | cut -d\' -f1`
+ done < concat.txt
+ fi
+ fi
+ rm concat.txt
+ } &
+ fi
+ curl --no-progress-meter --fail -o$t.jpeg $1/capture
+ curlexit=$?
+ if [ $curlexit -eq 22 ]
+ then
+ q=$(($q+1))
+ echo "Setting quality to $q"
+ continue
+ fi
+ if [ ! $curlexit -eq 0 ]
+ then
+ echo ERROR!!! Curl returned with $curlexit
+ continue
+ fi
+ if [ $since -ge 1024 ] && [ $q -gt 4 ]
+ then
+ q=$(($q-1))
+ fi
+ if [ ! `file $t.jpeg | grep -o [1-9][0-9]*x[1-9][0-9]*` = 1600x1200 ]
+ then
+ echo Popravljam ločljivost.
+ curl --no-progress-meter "$1/control?var=framesize&val=13"
+ fi
+done