Betriebsdokumentation — Kiosk-Videoplayer¶
Alle 8 PCs wurden automatisiert installiert: Debian Preseed für das
Grundsystem, anschließend firstrun.sh für die Kiosk-Konfiguration
(STM-Installer). Die Systeme sind identisch aufgesetzt.
1. Überblick¶
Diese Systeme sind Kiosk-Videoplayer auf Basis von Debian Trixie (13). Jeder PC startet automatisch einen MPV-Player im Vollbild.
Es gibt zwei Gruppen:
PC 1–6 — Video-Playback mit synchronisierter Wiedergabe (mpv-sync.lua, Master/Slave)
PC 7–8 — Statische Bilder aus einer Playlist (kein Sync)
Die PCs wurden mit dem STM-Installer aufgesetzt (firstrun.sh nach Preseed-Installation).
Netzwerk¶
Die Installation läuft aktuell noch im alten Netz 172.25.18.0/22. Die PCs bekommen demnächst ein eigenes VLAN mit neuen Adressen — Broadcast-Adressen in mpv.conf und Bridge-Service müssen dann angepasst werden.
PC |
Hostname |
IP (aktuell, DHCP) |
|---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
Note
Bei VLAN-Umzug anpassen:
Broadcast-Adresse in
mpv.conf(sync-target=172.25.19.255:...)Broadcast-Adresse im Bridge-Service (
mpv-udp-bridge.service)
2. Benutzer¶
User |
Zweck |
Login |
|---|---|---|
|
Kiosk-Betrieb, startet den Player automatisch |
Auto-Login via LightDM |
|
Administration (AVM-Team) |
SSH, VNC, sudo (mit Passwort) |
|
Administration (TU Berlin) |
SSH, VNC, sudo (mit Passwort) |
Alle drei User gehören zur Gruppe avm — können gegenseitig Dateien lesen und schreiben.
SSH-Keys sind für avm und kiosk hinterlegt. Für tu müssen die SSH-Keys des TU-Teams noch eingetragen werden (/home/tu/.ssh/authorized_keys).
3. Verzeichnisstruktur¶
Alle benutzerbezogenen Dateien liegen unter /home/kiosk/content/:
/home/kiosk/content/
├── startup.sh # Autostart-Script (wird bei kiosk-Login ausgeführt)
├── mpv.conf # MPV-Konfiguration (Lautstärke, Mute, Video-Optionen)
├── mpv-sync.lua # Sync-Script für Multi-Player-Betrieb
├── watchlater_files/ # MPV Wiedergabepositionen (automatisch)
├── userconfig.txt # Konfiguration für die Humboldt-Probe (MQTT)
├── README-mpv-sync.md # Doku zum Sync-Script
└── (Videos / Playlisten) # Hier eigene Inhalte ablegen
Die MPV-Hauptkonfiguration unter ~/.config/mpv/mpv.conf inkludiert automatisch /home/kiosk/content/mpv.conf — dort Änderungen vornehmen.
mpv.conf — PC 1–6 (Video mit Sync)¶
Einer der PCs ist Master, die restlichen sind Slaves. Die Konfiguration ist identisch bis auf die script-opts-Zeile:
vo=gpu-next
hwdec=vaapi
profile=gpu-hq
fullscreen
input-ipc-server=/tmp/mpvsocket
pause # Startet pausiert (wird per Bridge/Sync gestartet)
reset-on-next-file=pause # Bei Playlist-Wechsel wieder pausieren
loop-playlist # Gesamte Playlist in Schleife
script=~/content/mpv-sync.lua
# Master (genau ein PC):
script-opts=sync-backend=socat,sync-role=master,sync-target=172.25.19.255:12338,sync-interval=0.5,sync-show_osd=no
# Slaves (alle anderen):
#script-opts=sync-backend=socat,sync-role=slave,sync-target=172.25.19.255:12338,sync-initial_offset=0.015,sync-show_osd=no
mpv.conf — PC 7–8 (Statische Bilder)¶
vo=gpu-next
hwdec=vaapi
profile=gpu-hq
fullscreen
input-ipc-server=/tmp/mpvsocket
pause
reset-on-next-file=pause
loop # Aktuellen Eintrag loopen (nicht die Playlist)
Kein Sync-Script. loop (statt loop-playlist) sorgt dafür, dass das aktuell angezeigte Bild dauerhaft gehalten wird.
4. MPV-Steuerung¶
mpv_control Script¶
Das Script /usr/bin/mpv_control steuert MPV über den IPC-Socket /tmp/mpvsocket:
mpv_control play # Wiedergabe starten
mpv_control pause # Pausieren
mpv_control play-pause # Umschalten Play/Pause
mpv_control next # Nächster Titel
mpv_control prev # Vorheriger Titel
mpv_control skip_plus # 60 Sekunden vorspringen
mpv_control skip_minus # 60 Sekunden zurückspringen
mpv_control playlist_index N # Titel N aus der Playlist spielen
mpv_control vol_get # Aktuelle Lautstärke abfragen
mpv_control vol_plus # Lautstärke +5
mpv_control vol_minus # Lautstärke -5
mpv_control get_mute # Mute-Status abfragen (0/1)
mpv_control set_mute 1 # Muten
mpv_control set_mute 0 # Unmuten
mpv_control get_filename # Aktuellen Dateinamen abfragen
mpv_control get_playlist_index # Aktuelle Position in der Playlist
mpv_control get_playlist_count # Anzahl Titel in der Playlist
mpv_control file_pos_percent # Wiedergabeposition in Prozent
mpv_control file_pos_sec # Wiedergabeposition in Sekunden
mpv_control file_duration_sec # Gesamtlänge in Sekunden
Lautstärke- und Mute-Änderungen über mpv_control werden automatisch in mpv.conf persistiert.
Fernsteuerung (mpv-udp-bridge)¶
Der Service mpv-udp-bridge.service empfängt UDP-Broadcast-Befehle und leitet play/pause-Kommandos an den MPV-Socket weiter.
Ports:
PCs |
UDP-Port |
|---|---|
1–6 |
12339 |
7–8 |
12340 |
Der Bridge-Befehl (exemplarisch PC 1–6):
/usr/bin/socat -u UDP4-RECVFROM:12339,broadcast,fork,reuseaddr \
SYSTEM:"/bin/grep -E 'play|pause' | socat - /tmp/mpvsocket"
Damit kann MPV von einem anderen Rechner gesteuert werden:
# Play an alle PCs 1-6 senden:
echo '{ "command": ["set", "pause", "no"] }' | socat - UDP4-DATAGRAM:172.25.19.255:12339,broadcast
# Pause an PC 7-8:
echo '{ "command": ["set", "pause", "yes"] }' | socat - UDP4-DATAGRAM:172.25.19.255:1240,broadcast
Note
Die Bridge filtert auf play und pause — andere Befehle werden verworfen. Für volle MPV-Steuerung direkt per SSH und mpv_control arbeiten.
Warning
mmm: Der Befehl, den wir brauchen, um ein bestimmtes Video zu schicken, ist playlist-play-index. Das funktioniert nur, weil grep -E play|pause aus Versehen auch playlist-play-index matcht lol. Die Filterung könnte also robuster sein, da das Ganze vielleicht randomly breakt/nur aus Versehen funktioniert.
5. MPV-Sync (Multi-Player-Synchronisation)¶
Das Script mpv-sync.lua synchronisiert die Wiedergabe mehrerer MPV-Instanzen über UDP-Broadcast.
Konzept¶
Master sendet regelmäßig seine Wiedergabeposition per UDP-Broadcast
Slaves empfangen die Position und gleichen sich an (Geschwindigkeitsanpassung oder Seek)
Backend:
socat(lua-socket ist inkompatibel mit MPV in Debian 13)
Aktuelle Konfiguration (PC 1–6)¶
Sync ist aktiv. In der mpv.conf von PC 1–6:
#
Für Slaves die Rolle ändern:
script-opts=sync-backend=socat,sync-role=slave,sync-target=172.25.19.255:12338,sync-initial_offset=0.015,sync-show_osd=no
Parameter¶
Parameter |
Beschreibung |
|---|---|
|
|
|
|
|
Broadcast-Adresse:Port ( |
|
Sendeintervall Master in Sekunden (Standard: 0.5) |
|
Zeitversatz Slave in Sekunden (Feintuning) |
|
OSD-Anzeige ( |
Detaillierte Dokumentation: /home/kiosk/content/README-mpv-sync.md
6. Fernzugriff¶
SSH¶
ssh avm@HOSTNAME # Admin-Zugang AVM (sudo möglich)
ssh tu@HOSTNAME # Admin-Zugang TU Berlin (sudo möglich)
ssh kiosk@HOSTNAME # Direkter Zugriff auf Kiosk-User
VNC¶
x11vnc — Zugriff auf das laufende Kiosk-Display (Port 5900):
# Nur über SSH-Tunnel (x11vnc bindet auf localhost):
ssh -L 5900:localhost:5900 avm@HOSTNAME
# Dann VNC-Viewer auf localhost:5900 verbinden
TigerVNC — Eigene Desktop-Session als avm- oder tu-User:
# Auf dem Zielrechner:
tigervncserver # Startet Session auf :1 (Port 5901)
# Vom eigenen Rechner:
ssh -L 5901:localhost:5901 tu@HOSTNAME
# VNC-Viewer auf localhost:5901
VNC-Passwort: avm (User avm) / tu2026! (User tu)
7. Systemdienste¶
Service |
Beschreibung |
|---|---|
|
UDP→Socket-Bridge für MPV-Fernsteuerung (Port 12339/12340) |
|
MQTT-Monitoring (Ping, Temperatur, Mute-Status etc.) |
|
Wake-on-LAN Fix für Dell Optiplex (oneshot) |
|
Display-Manager, Auto-Login für kiosk |
Humboldt-Probe¶
MQTT-basiertes Monitoring-System unter /home/kiosk/humboldt_probe/.
Konfiguration: /home/kiosk/content/userconfig.txt
Broker: srv-control-avm (TLS mit Client-Zertifikaten)
8. Kurzreferenz — Wichtige Befehle¶
System¶
sudo reboot # Neustart
sudo shutdown -h now # Herunterfahren
MPV steuern¶
mpv_control play # Abspielen
mpv_control pause # Pause
mpv_control next # Nächster Titel
mpv_control vol_plus # Lauter (+5)
mpv_control set_mute 1 # Stumm schalten
Logs ansehen¶
journalctl -u mpv-udp-bridge -f # Bridge-Log live
journalctl -u humboldt-probe -f # Probe-Log live
journalctl -t mpv -f # MPV-Log (wenn über systemd-cat gestartet)
Services¶
systemctl status mpv-udp-bridge # Status prüfen
systemctl restart mpv-udp-bridge # Neustarten
systemctl status humboldt-probe
Kiosk-Session neustarten¶
# Als avm-User:
sudo systemctl restart lightdm # Startet kiosk-Session komplett neu
Video-Format¶
Bildformat: HD 1929x1080
Video Codec: H264
Video-Farbprofil: Rec709 – TV Standard auch für HD)
Chroma Subsampling: i.d.R. 4:2:2
Embedded Timecode (kein Burn in): nur als im .mov Container realisierbar (mp4 z.B. bietet meines Wissens keinen embedded TC)