Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke

Projekt: Video Organisation und Aufbereitung für das Web von diversen Webcams (Version 3.0) vom 22.05.2015

Video Aufbereitung und Organisation ?

Da hat man eine tolle Netzwerk Kamera oder RTSP Streaming Kamera, die bei "Alarm" oder Bewegungserkennung alles aufzeichnet und Bilder sichert - sogar auch per Email verschickt. Entweder auf einem FTP Server oder auf einer internen Speicher oder MicroSD Card (je nach Modell). Bei Sicherung der Bilder auf einer SD Karte ist meist die Gefahr das jemand die Kamera findet und die Speicherkarte entfernt - so hat man keine Aufnahmen. Oder die Aufnahmen werden auf einem FTP Server gesichert, aber da fallen mitunter ganz schöne Datenmengen an - wo soll man das alles Speichern - und wer soll wann was alles löschen ?

 

Die Lösung:

Ein Raspberry Pi mit einer großen Speicherkarte wo ein FTP Server drauf läuft - alternativ auch ein Banana Pi oder CubieTruck mit einer SSD. Die Netzwerk Kamera(s) übermitteln die Bilder und Videos per FTP auf die Speicherkarte des Raspberry Pis, der irgendwo im Netzwerk hängt, nicht unbedingt dort wo auch die Kamera auch ist. Alternativ kann auch der Raspberry selber einen RTSP Stream abgreifen und direkt aufzeichnen. Aber auch hier fallen mitunter ziemliche Datenmengen an, das muss also organisiert werden. Ein Cronjob auf dem Raspberry Pi ruft alle z.b. 10 Minuten ein PHP Script auf, welches die Bilder und Videos in passende Datumsordner weg sortiert. Es rechnet die Bilder für die Webvorschau klein, erstellt ein Vorschaubild des Videos und bereitet so den Weg für eine sehr schnelle sortierte Webvorschau. Weiterhin lässt sich die Archivdauer einstellen, so kann man sagen das nach z.b. 14 Tagen die ältesten Aufnahmen automatisch gelöscht werden - so läuft das ganze ziemlich Autark und rund ohne das man sich darum kümmern muss.

Das PHP Script kann auch direkt im Browser aufgerufen werden und zeigt einem "schön" einfach alle Aufnahmen des Tages an, und bietet die möglichkeit das Bilder und Video Archiv zu durchforsten und die Aufnahmen zu sichten.

Dieses ist Version 3.0 des Scriptes. Da hier mittlerweile drei Webcam am laufen sind, musste das Script erweitert werden. Das Script kann beliebig viele Webcams verwalten und ist einfach Ausbaufähig, egal wie die Daten auf den Raspberry Pi kommen. Mittlerweile habe ich das ganze auf einen Banana Pi mit einer SSD verschoben, da eine SD Karte ja den Ruf hat nicht ewig zu halten. Ausserdem beschleunigt ein Banana Pi mit einer SSD alles erheblich.

Wie sieht denn die Hauptmaske des Video Collectors aus ?

Bei "1" sieht man die Kamera, zum einem kann man ein Vorschau oder Lagebild der Kamera hier einbauen (135 Pixel Breite in JPG), speichert wird es im jeweiligen Kamera Ordner unter "KameraDaten.jpg". Durch einen Klick auf das Bild oder den Namen der Kamera wird das Kamera Archiv der gewählten Kamera in einem neuem Fenster geöffnet. Weiterhin kann man hier ablesen wann der letzte Eintrag dazu gekommen ist und wieviele Bilder und Videos im Archiv schlummern.

Bei "2" kann man sehen ob die Netzwerk Kamera gerade "Online" oder "Offline" ist, also aktuell Sendet oder nicht. Bei einem Klick auf den Button wird auf das Live Bild der Kamera umgeschaltet. Der Link dazu wird in der Textdatei im Kamera Ordner "KameraDaten.txt" hinterlegt. Sollte kein Link hinterlegt sein, weil z.b. die Kamera kein Livefeed hat, wird weder "Online" noch "Offline" angezeigt.

Bei "3" sieht man wie voll das Archiv der jeweiligen Kamera schon ist, also wieviele Tage schon gespeichert und durchsuchbar sind. Auch wird angezeigt wie groß die Archivdauer ist, die auch in der Datei "KameraDaten.txt" frei einstellbar ist. Für jede Kamera kann man alles einzeln einstellen. Weiterhin wird hier noch angezeigt wie groß die Datenmenge der bisherigen Aufnahmen ist.

Bei "4" sieht man noch wieviel Speicher auf der SSD/Festplatte oder SD Karte noch frei ist. Daran kann man sich dann Orientieren ob man die Archivdauer der Kameras nicht etwas reduzieren sollte.


 

Weiter geht es mit der eigentlichen Kamera "Web-Vorschau" :

Bei "1" ist der Name der Aktuell gewählten Kamera zu entnehmen.

Bei "2" sind die gespeicherten Tage direkt abrufbar.

Bei "3" kann man den Live Feed der Kamera aufrufen, soforn vorhanden und die Kamera Online ist.

Bei "4" sieht man wie groß der aktuelle Tag ist (in Daten und Anzahl der Dateien)

Bei "5" kann man den freien Speicherplatz und die maximale Speicherzeit ablesen.

Bei "6" bekommt man alle 3 Zeilen einen Optischen Schnellfinder angezeigt, falls man man schnell eine bestimmte Uhrzeit suchen sollte.

Bei "7" sind die einzelnen Bilder und Videos direkt anklickbar verfügbar, die Aufnahmen werden direkt in einem neuen Fenster geöffnet.

 

Hier noch ein Beispiel einer anderen Kamera:

Die Kamera selber ist Offline (Wird zusammen mit der Terrarien beleuchtung Ein- und Ausgeschaltet) und trotzdem ist natürlich das ganze Archiv durchsuchbar.


Genug der Theorie und Ansichtssachen, wie Installiert man es ?

Für die generierung der WebVorschau der Videos ist der AVconv nötig. Ausserdem muss die GDlib installiert sein, die man mit der Apache Installation mit installieren kann (Siehe Grundinstallation)

Den "avconv" Installiert man mittels:

sudo apt-get install avconv

und dann noch

sudo apt-get install libav-tools

Die Netzwerk Kameras sollte die Bilder und Videos im folgenden Format in dem FTP-Ordner "RaspberryPI-IP"/ftp/Kameras/Kamera_x/INPUT" speichern. Die Filenamen sind an sich ziemlich egal. Unterstützt werden die Formate "mov", "mp4" und "jpg". Alles in kleinschreibung - ich habe mich nicht damit befasst was passiert wenn die Endungen groß geschrieben werden.


Die Dateistruktur:

Wie man sieht liegt alles im "FTP" Ordner der unter "/var/www/ftp" zu finden ist. Somit ist das alles sehr kompatibel mit der ProFTPD installation der "Grundinstallation". Dort drin findet sich der Ordner "Kameras" und dort drinnen nur die einzelnen Ordner "Kamera_1" bis "Kamera_n" - die Anzahl ist beliebig.

In dem eigentlichen "Kamera_1" Ordner (der dient hier jetzt mal als beispiel), findet sich der der Ordner "index_Bilder", wo sich eigentlich nur 2 PNGs befinden um Bilder und Videos in der Schnellvorschau unterscheiden zu können. Weiterhin ist hier die "index.php" datei die die eigentiche Webvorschau und auch die Aufnahmen Organisation übernimmt.

In den INPUT Ordner soll die Netzwerk Kamera die fertigen Bilder und Videos ablegen. Der OUTPUT Ordner ist nur für evtl. Streaming Kameras nötig , dann ist das Script auch etwas anzupassen, details dazu findet sich bei der Version 2.1 des Video Collectors. Standard ist aber der INPUT Ordner.

Im ORIGINAL Ordner finden sich nach der Sortierung alle Orginial Bilder und Videos, sauber nach Tagen weg sortiert. Im WEB Ordner ist die gleiche sortierung nur als Web Aufbereitung zu finden.

Die Datei "KameraDaten.jpg" ist eine Art Optische Kamera Anzeige, also ein Bild was die Kamera repräsentiert, bitte in der Auflösung von 135 Pixeln in der Breite.

Die Datei "KameraDaten.txt" enthält folgende Stichwörter:

Archivierungsdauer:30:
Kamera-Name:Haupteingang:
LiveBild:http://192.168.0.94/en/player/qt_hd.asp#:#

Wie man sieht hat die Datei einen bestimmten Aufbau. Erst die Archivierungdauer, wobei die Dauer von zwei Doppelpunkten eingefasst ist.

In der nächsten Zeile steht der Name der Kamera, auch wieder durch 2 Doppelpunkte eingefasst.

An der dritten Stelle steht die Adresse des evtl Live Bildes der Kamera eingefasst durch "LiveBild:" und hinten noch "#:#". Sollte die Kamera kein Livebild haben, einfach die ganze Zeile weglassen.


 

DOWNLOAD:

Den Video Collector V3.0 gibt es hier im kostenlosen Download...

Den alten Video Collector V2.0 gibt es hier...


Einrichtung der Cronjobs:

Die folgende Bash Datei "/var/www/Reboot.sh" sorgt dafür das das System rebootet und die Trashes geleert werden.

#!/bin/bash

rm -rf ~/.local/share/Trash/files/*

sudo reboot

Damit die Video auch automatisiert als Webvorschau generiert werden, muss man einen Cronjob anlegen:

sudo crontab -e

In diesen Cronjob legen wir jetzt 3 Zeilen folgendermaßen fest:

#Aufnahmen für Kamera 1 Reorganisieren, z.b. alle 8 Minuten das PHP Script aufrufen.
*/8 * * * * /usr/bin/curl 192.168.0.58/ftp/Kameras/Kamera_1/index.php?action=organize >/dev/null 2>&1
 
#Einmal pro Woche rebooten...
5 0 * * 6 /bin/bash /var/www/Reboot.sh >/dev/null 2>&1
 
#Aufnahmen für Kamera 2 Reorganisieren, z.b. alle 10 Minuten das PHP Script aufrufen.
*/10 * * * * /usr/bin/curl 192.168.0.58/ftp/Kameras/Kamera_2/index.php?action=organize >/dev/null 2>&1

Wichtig ! - nachdem man alles installiert hat unbedingt einen :

sudo chmod 0777 -R /var/www/

machen um auch passende Schreibrechte für die Scripte zu haben.

Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke