Eine eigene Videowall für CCTV mit mpv erstellen
Hat man mehrere Überwachungskameras in Betrieb, ist die Darstellung aller Streams auf einem oder mehreren Monitoren eine kleine Herausforderung. Es gibt mehrere Raspberry Pi Motion-Kameras, die in diesem Beispiel unterschiedliche Hotspots (Tränke, Futterstation, etc.) von Vögeln überwachen.
Wie lassen sich die einzelnen Bilder anordnen, das man möglichst auf einen Blick alles Wesentliche sieht?
Dabei ist es ganz besonders wichtig, dass die Fenster immer am gleichen Platz und in der gleichen Größe auf dem Bildschirm platziert werden. Mit den Fensterregeln von KDE lässt sich das schnell und einfach umsetzen.
mpv als Mediaplayer für die Videowall
In diesem Setup wird mpv 1, eine Command line media player verwendet.
Meine Versuche die Videowall mit VLC media player umzusetzen sind alle gescheitert. Es war nicht möglich einen stabilen Ablauf hinzubekommen, dass die einzelnen Fenster der Video-Stream automatisch durch Fensterregeln an die immer gleichen Position gesetzt werden konnte.
Das Problem mit vlc:
Verwendet man die Fensterregeln von KDE, um die einzelnen Fenster an definierten Positionen automatisch zu platzieren, funktioniert das mit vlc nicht richtig.
Der Fenstertitel wird von vlc erst nach dem Öffnen des Streams vergeben.
Die Fensterregel greift aber bereits vorher, direkt beim Öffnen des vlc-Fensters.
→ Die Fensterregel versucht das Fenster über den Titel zu finden, den es noch nicht gibt. Eine Platzierung ist deshalb nicht möglich.
mpv
mpv installieren
mpv wird aus den Paketquellen installiert.
sudo apt install mpv
mpv als Video- und Audioplayer im RSS-Reader Newsboat verwenden
mpv lässt sich auf als Video- und Audioplayer im RSS-Reader Newsboat verwenden.
Es wird dafür ein neuer Shortcut in der Newsboat-Konfigurationsdatei config anglegt.
# MACOS AND LINUX STREAM #
macro c set browser "mpv --player-operation-mode=pseudo-gui -- %u &"; one; set browser firefox
Das funktioniert sehr gut zum Anschauen von Musikvideos. 👉 YouTube-Channels in Newsboat abonnieren - So geht’s mit RSS-Feeds
Drück man nun , + c öffnen sich die Multimediainhalte direkt in mpv. 🎸
Die Überwachungsstreams
Für jede Kamera ist ein eigenes Skript zu erstellen:
mpv_bird_01.shmpv_bird_02.shmpv_bird_03.sh
Ein Raspberry Pi, mehrere Kameras
An einem Raspberry Pi können mehrere Kameras angeschlossen werden.
Bis zum Raspberry Pi 4 kann eine Kamera über ein Flachbandkabel an die 15-polige MIPI-Kameraschnittstelle (CSI) angeschlossen werden. Ab dem Raspberry Pi 5 lassen sich zwei Kameras über diese Schnittstelle anschließen.
Zusätzlich dazu lassen sich auch ganz normale USB-Kameras an den Raspberry Pi anschließen. Dafür können spezielle Kameras verwendet werden oder ganz einfache Webcams, wie z.B. eine Logitech C720. Bei der Auswahl sollte man auf die Auflösung achten.
Mit Motion lassen sich diese unterschiedlichen Kameras ansteuern.
If you only have one camera you only need the motion.conf file but if you have more than one camera, then you will need to have one camera config file per camera plus the motion.conf file.2
Die Skripte haben die gleich Struktur. Es sind jeweils die Variablen zu ändern.
#!/usr/bin/env bash
set -euo pipefail
CREDS_FILE="./mpv_cctv.conf"
source "$CREDS_FILE"
: "${HTTP_TITLE_BIRD_01:?Missing HTTP_TITLE_BIRD_01}"
: "${HTTP_USER_BIRD_01:?Missing HTTP_USER_BIRD_01}"
: "${HTTP_PASS_BIRD_01:?Missing HTTP_PASS_BIRD_01}"
: "${HTTP_URL_BASE_BIRD_01:?Missing HTTP_URL_BASE_BIRD_01}"
mpv --title="${HTTP_TITLE_BIRD_01}" \
--rtsp-transport=tcp \
"${HTTP_URL_BASE_BIRD_01/http:\/\//http:\/\/${HTTP_USER_BIRD_01}:${HTTP_PASS_BIRD_01}@}"
Die Zugangsdaten zu den Stream sind in der Datei mpv_cctv.conf abgespeichert.
HTTP_TITLE_BIRD_01="BIRD-Futterstation"
HTTP_USER_BIRD_01="user"
HTTP_PASS_BIRD_01="password"
HTTP_URL_BASE_BIRD_01="http://192.168.21.10:8081"
HTTP_TITLE_BIRD_02="BIRD-VOGELTRAENKE"
HTTP_USER_BIRD_02="user"
HTTP_PASS_BIRD_02="password"
HTTP_URL_BASE_BIRD_02="http://192.168.21.11:8081"
HTTP_TITLE_BIRD_03="VOGEL-BRUTKASTEN"
HTTP_USER_BIRD_03="uxer"
HTTP_PASS_BIRD_03="password"
HTTP_URL_BASE_BIRD_03="http://192.168.21.12:8081"
Die Rechte für die Dateien sind entsprechend ihrer Funktion anzupassen.
chmod +x *.sh
chmod 0600 mpv_cctv.conf
Starten mit zsh-Alias
Das Starten der Skripte kann einfach über die CLi erfolgen:
~/mpv &&
./mpv_bird_01.sh &
./mpv_bird_02.sh &
./mpv_bird_03.sh &
Das Starten kann mit einem zsh-Alias erheblich vereinfacht werden. Dazu wird ein neuer Alias in der .zshrc oder dem entsprechenden Skript angelegt:
alias cctv='~/mpv && ./mpv_bird_01.sh & ./mpv_bird_02.sh & ./mpv_bird_03.sh & sleep 4; htop'
Der Alias startet alle Skripte, wartet 4 Sekunden und zeigt im gleichen Terminalfenster htop an.
Alle Skripte lassen sich damit bequem mit dem Befehl cctv direkt von der CLI starten.
KDE - Fensterregeln
Für jedes mpv-Fenster ist eine eigene Regel anzulegen.
KDE - Fensterregeln
‼️ Bei den Einstellungen pro Fenster ist es besonders wichtig, dass bei Fenstertitel Exakte Übereinstimmung ausgewählt wird.
Das einfachste Vorgehen zur Definition aller Fenster der Videowall ist:
- alle Streams öffnen
- auf dem Bildschirm platzieren
- KDE-Fensterregel anlegen
- Die Einstellungen mit einem Klick auf
Fenstereigenschaften ermittelnin die jeweilige Regel übernehmen.
Alle mpv-Fenster lassen sich auf einmal mit dem Befehl killall mpv beenden.
Nach dem erneuten Öffnen mit dem zsh-Alias cctv von der CLI, werden alle Fenster an der festgelegten Position in der definierten Größe geöffnet.
Damit ist die Videowall fertig 🎉
Gib mir gerne einen Kaffee ☕ aus 😀
Gib mir gerne einen Kaffee ☕ aus !
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj
Weitere Möglichkeiten mich zu unterstützen findest du 👉 hier
Follow Me
Source
Photo by Tasha Kostyuk on Unsplash



