Webcam IP-Datenstrom mit Raspi 5 aufzeichnen

Inhaltsverzeichnis

Aufgabenstellung

Während eines Events sollte ein Zeitraffer-Film erstellt werden. Hierzu sollten Einzelbilder erstellt und anschließend zu einem Zeitraffer-Film zusammengesetzt werden. Parallel dazu soll auch noch eine ganz normale Videoaufzeichnung erfolgen. Daraus wurde eine Gesamtlösung die jetzt zur Überwachung einer Hofeinfahrt genutzt wird.

Hardware

Auf einem bereits in Betrieb befindlichen Raspberry Pi 5 wurde ein zusätzlicher Docker-Container eingerichtet.

Beim örtlichen Elektronikhändler wurde eine Outdoor-Webcam mit WLAN-Anbindung erworben. Ich verwende hier das Modell EZVIZ CS-CV310. Nachdem der WLAN-Zugang mit der zur Kamera gehörenden App eingerichtet ist, kann im Internet-Router der Zugriff der Kamera auf das Internet komplett abgeschaltet werden. Für den Betrieb reicht das eigene LAN/WLan aus.

Programmiert wurde die Anwendung in golang.

Download

In meinem git-Repository finden Sie die aktuelle Version im Verzeichnis
https://git.lang-dieter.de/dieter/webcam/releases

Sie finden darin die Einzeldateien aber auch eine ZIP-Datei mit folgenden Inhalt:

  • config.json.example
    die Beispielconfiguration muss nach Ihren Bedürfnissen angepasst werden
  • docker-compose.yaml
    die Definition des zu erzeugenden Containers
  • dockerfile
    wird von docker-compose.yaml verwendet, um die notwendig Software im Container zu installieren.
  • stoerung.jpg
    wird von unserer App angzeigt, wenn der Datenstrom von der Kamera unterbrochen ist.
  • Programmdateien – je nach Betriebssystem
    webcam-amd64 – Linux 64 Bit wie z. B. Ubuntu
    webcam-arm64 – ARM-Prozessor 64-Bit wie z. B. Raspi 5
  • webcam.service
    dient der Definition des Hintergrunddienstes für unsere Anwendung. Die Einrichtung des Dienstes ist auch in der README.MD des Projektes https://git.lang-dieter.de/dieter/webcam beschrieben.

Installation

Dockercontainer bereitstellen.

# Verzeichnis bereitstellen
mkdir -p srv_webcam/app/data/video
cd srv_webcam

# Aktuelle Version herunterladen
wget https://git.lang-dieter.de/dieter/webcam/releases/download/v1.0.3/webcam-v1.0.3.zip

# ZIP-Datei entpacken
unzip webcam-v1.0.3.zip
cd webcam-v1.0.3/


#Dateien aus ZIP-Archiv verteilen
 mv docker* ..
 mv * ../app

#Unzip-Ordner wieder entfernen
cd ..
rm webcam-v1.0.3 -rf

Wir erhalten damit folgende Verzeichnisstruktur:

 tree
.
├── app
│   ├── config.json.example
│   ├── data
│   │   └── video
│   ├── stoerung.jpg
│   ├── webcam-amd64
│   ├── webcam-arm64
│   └── webcam.service
├── docker-compose.yaml
├── dockerfile
└── webcam-v1.0.3.zip

4 directories, 8 files

Jetzt muss nur noch die Beispielkonfiguration angepasst werden. Die Bedeutung der Einträge finden Sie ebenfalls in der README des Projektes
https://git.lang-dieter.de/dieter/webcam/src/branch/main/README.md
Mindestens folgende Zeilen müssen Sie anpassen:
rtsp-url
web_user
werb_password

# Beispieldatei kopieren
cp app/config.json.example app/config.json

# Inhalt anpassen
nano app/config.json

Jetzt kann der Container gestartet werden

In der Datei dockerfile prüfen, ob in der Zeile Entrypoint die zum Betriebssystem passende ausführbare Datei aufgerufen wird.

In der Datei docker-compose.yaml prüfen, ob die Volumes für app und app/data korrekt eingetragen sind.
(In der zur Verfügung gestellten Datei verweist app/data auf ein USB-Laufwerk !)

docker compose up -d

Weboberfläche im Browser aufrufen

Aufruf der Weboberfläche:
http://localhost:8083/