Scripte für IPCAM Server

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
dre81
Beiträge: 3
Registriert: 06.12.2018 11:19:50

Scripte für IPCAM Server

Beitrag von dre81 » 06.12.2018 13:37:43

Hallo debianforum,

ich bin zZ dabei einen Rpi 3b+ als Server für IP Kamera Streams zu konfigurieren. Zum Einsatz kommt das besagte Rpi Modell mit aktuellem Raspbian sowie 4x SV3C 1080P WLAN Kameras.
Ich habe alles soweit lauffähig eingerichtet, habe allerdings noch ein paar Hürden wo es hakt.
Für die Umsetzung habe ich ein paar simple Skripte geschrieben die per CRON gestartet werden.
Die 4 rtsp Streams werden per ffmpeg - copy jeweils "@midnight" für 24h auf eine externe HDD in den jeweiligen Kamera Ordner gespeichert. Zudem gibt es der Übersicht wegen weitere Skripte die ebenfalls @midnight starten aber per sleep etwas zeitverzögert ausgeführt werden, da die frischen Aufnahmen vom Vortag in einen jeweiligen extra Ordner verschoben werden wo diese maximal 14-21 Tage verbleiben bis diese durch ein letztes Skript nach maximaler Zeitdauer gelöscht werden.
Wie lange ich die Daten letztendlich vorhalte muss ich noch genauer testen. Ein Stream einer Kamera benötigt bei aktuellen Einstellungen ca. 7-10GB pro Tag, zur Verfügung steht eine 1TB HDD. Platz genug aber da lässt sich sicher noch etwas optimieren.
Zugegriffen auf die Dateien wird später per Samba oder FTP. Zusätzlich habe ich mir passend eine Batch gebaut mit der sich VLC 4x ohne Interface an bestimmter Position und Größe des Desktops öffnet und die Streams der Kameras wiedergibt. Jede Kamera schafft maximal 3 gleichzeitige Streams, 1 Stream zum capturen, einer als VLC Livebild im Büro sowie bei Bedarf einer für mobilen Zugriff.

So viel zu meinem kleinen Projekt. Nun aber zu den Dingen die noch ungeklärt sind.
Für den Fall das der Rpi während des Betriebs mal rebootet ( gewollter oder versehentlicher Reset, Stromausfall etc.) habe ich ein extra Skript welches ffmpeg direkt nach dem Reboot startet. Nun möchte ich gerne, dass diese Aufnahme bis 00.00Uhr läuft und dann stoppt. Im Moment habe ich die Aufnahmelänge auf 24h bzw. 86400sec beschränkt, damit mir nix flöten geht. Wie könnte man dies noch etwas eleganter regeln um unnötige, doppelte Aufnahmen zu vermeiden, da ab Mitternacht dann wieder die routinemäßigen Streams starten?
Das andere Problem betrifft den Fall in dem das Wlan bzw. der Router ausfällt. Zwei der Kameras sollen drahtlos betrieben werden, fällt das Netz mal aus, bricht ffmpeg das Capturen natürlich ab und der nächste Aufnahmezeitpunkt wäre dann erst um Mitternacht. Gibt es hier eine Möglichkeit im Betrieb zu prüfen ob der entsprechende Stream gespeichert wird und zudem die Verbindung steht? Falls nicht, sollte das entsprechende Skript dann gestartet werden. Kommt mir selbst etwas kompliziert vor. Ich denke daran die PIDs von ffmpeg zu checken und wenn nicht aktiv dann das Skript triggern und ggf. zusätzlich die Kameras anpingen aber da hört mein Verständnis auch schon auf :D.
Das letzte Problem hängt mit dem Mailversand zusammen aber das ist erstmal nicht so relevant, ich glaube das sprengt hier sonst den Rahmen :). Ich habe bereits mehrere Ansätze probiert aber es ist nie auch nur eine Mail angekommen . Probiert habe ich bis jetzt Postfix und SSMTP. Ich hätte gerne eine Nachricht, wenn das Reboot-Skript durch Cron startet. Wäre kein lifesaver aber nice to have.

Was meint ihr zu dem Ganzen?
Über ein paar Denkanstöße freue ich mich natürlich sehr ;)

Hier noch der Inhalt des Reboot-Skripts

Code: Alles auswählen

#!/bin/sh
# record-reboot.sh
# FFMPEG nach Reboot
#
STARTTIME=$(/bin/date +"%d.%m.%Y")"("$(/bin/date +"%H").$(/bin/date +"%M").$(/bin/date +"%S")Uhr")"
#
## IP Kamera Namen ##
# Zeitstempel für jede Kamera
HCAM1=Hof-Cam1_$STARTTIME
HCAM2=Hof-Cam2_$STARTTIME
HCAM3=Hof-Cam3_$STARTTIME
HCAM4=Hof-Cam4_$STARTTIME
#
## Speicherort ##
RDIR="/Pfad-zu-Kameradaten/"
#
## Laufzeit ##
LENGTH="86400" # (24h)
#
## Stream Settings ##
#
ffmpeg -v 0 -rtsp_transport tcp -i "rtsp://kamerastream1:port/11" -vcodec copy -an -t $LENGTH $RDIR$HCAM1.mkv &
ffmpeg -v 0 -rtsp_transport tcp -i "rtsp://kamerastream2:port/11" -vcodec copy -an -t $LENGTH $RDIR$HCAM2.mkv &
ffmpeg -v 0 -rtsp_transport tcp -i "rtsp://kamerastream3:port/11" -vcodec copy -an -t $LENGTH $RDIR$HCAM3.mkv &
ffmpeg -v 0 -rtsp_transport tcp -i "rtsp://kamerastream4:port/11" -vcodec copy -an -t $LENGTH $RDIR$HCAM4.mkv &

dre81
Beiträge: 3
Registriert: 06.12.2018 11:19:50

Re: Scripte für IPCAM Server

Beitrag von dre81 » 08.12.2018 20:05:31

Falls es jemanden evtl. mal weiterhilft, ich bin schon etwas voran gekommen.
Ich habe dem Reboot-Script die Anweisung hinzugefügt die jeweilige ffmpeg PID in eine Datei zu speichern.
In einem weiteren Script werden mit pkill diese PID Dateien ausgelesen und die zugehörigen ffmpeg Prozesse gekillt sowie danach die PID Dateien gelöscht.

Code: Alles auswählen

ffmpeg -v 0 -rtsp_transport tcp -i "rtsp://adresse:port/11" -vcodec copy -an -t $LENGTH $RDIR$HCAM1.mkv & echo $! > /pfad/cam1.pid &

Code: Alles auswählen

#!/bin/sh
# record-reboot-kill.sh
# Recorded ip cam's - kill ffmpeg from after reboot
#
pkill -F /pfad/cam1.pid
pkill -F /pfad/cam2.pid
rm -f /pfad/cam1.pid
rm -f /pfad/cam2.pid
exit

dre81
Beiträge: 3
Registriert: 06.12.2018 11:19:50

Re: Scripte für IPCAM Server

Beitrag von dre81 » 11.12.2018 11:04:16

BTW... bin ich im falschen Forum?? ^^

Antworten