# YouTube als MUTEC-Medienangebot

Stand 21.10.2026. Unter Medien erscheint YouTube als Film-Button. Die bisherige YouTube-Formular-Einbettung im Hauptmenü entfällt; Messages bleibt dort erhalten.

Der Button öffnet die vorhandene Filmsteuerung im feature=video mit zusätzlichem Feld für die YouTube-URL. Unterstützt: youtube.com/watch, youtu.be, shorts, live und embed mit gültiger einzelner Video-ID. Wiedergabe erfolgt im bestehenden Electron-Reiter video; kein zusätzlicher Reiter und kein neuer DISPLAY_KEY. Die vorhandenen Startsignale bleiben 166-video / 50-maps.

Start/Pause, Zeitleiste, ±10 Sekunden und Lautstärke steuern den Counter. Der Ton läuft bei YouTube am Counter, wie gewünscht. Bei lokalen Filmbeiträgen bleiben Smartphone-Ton, Sprachspuren und Kapitel erhalten. Ein YouTube-Video bietet hier keine eigene Sprachspur-/Kapitel-Liste; die originalen YouTube-Steuerelemente im Bildschirmplayer bleiben erhalten.

## Technischer Anschluss

Die unveränderten WebSocket-Ereignisse video.command, video.listener und video.status werden wiederverwendet. Dynamische Medienkennungen sind streng begrenzt auf youtube_<11-stellige-ID>_v<0..100>. Die Kennung bezeichnet Video und Lautstärke. Eine Auswahl desselben Videos mit anderer Lautstärke ändert nur die Lautstärke, weder Position noch Play/Pause-Zustand. Roh-URLs und beliebige HTML-/Netzwerkziele werden nicht über den Kanal übertragen. Normale Katalogkennungen bleiben unverändert.

Die Anzeige verwendet die offizielle YouTube IFrame Player API über video/youtube.js. Referrer-Policy strict-origin-when-cross-origin und origin werden gesetzt, damit der Client identifizierbar ist. YouTube wird bei Auswahl eines YouTube-Videos geladen, nicht bei normalen Filmen. Keine Extraktion oder Speicherung von Streams; keine getrennte YouTube-Audiospur. Anzeigeelemente der MUTEC-Seite verdecken den YouTube-Player nicht. Bestehende LED-Entzerrung bleibt aktiv.

Fehlende Einbettungsfreigabe, Netzwerk- oder Autoplay-Fehler werden angezeigt; ein anderer Link kann gewählt werden. Für dieses Angebot sind abrufbare, einbettbare Einzelvideos vorgesehen. Live-Streams ohne bekannte Länge bieten keinen normalen Fortschrittsregler. YouTube-eigene Werbung, Login-/Altersfreigaben und Verfügbarkeit werden vom Anbieter bestimmt.

Die Stationsreservierung bleibt exklusiv und ticketgebunden. Beim Verlassen erfolgt die bisherige Trailer-Rückkehr. Übernahme im gleichen Browserprofil stellt die YouTube-Auswahl wieder her. Es gibt keine zusätzlichen Besucherrechte.

## Installation und Prüfung

Frontend-Dateien wurden vorab lokal und vom Webserver gesichert. Keine Änderungen an Relay, MegBes-Backend, Electron-Programm, views.json oder sources/. Der Anzeige-PC besitzt bereits den Reiter video mit der korrekten Display-URL. Nach der Installation müssen Smartphone-Seite und Electron-Webseiten neu geladen werden; Electron-Neustart lädt den neuen Player ebenfalls.

Geprüft mit echter lokaler WebSocket-Verbindung und simuliertem YouTube-Player: Medienbutton, URL-Prüfung, Play/Pause, Seek, Lautstärke ohne Sprung/Unterbrechung, Wechsel zu Wasser mit laufendem Smartphone-Audio, zurück zu YouTube, Fehler und Wiederaufnahme, Ticket-Tab-Übernahme, Trailer und schmale Mobilansichten. Bestehender Pong- und Login-Ablauf ebenfalls geprüft. Die echte YouTube-API konnte das offizielle Referenzvideo mit Metadaten laden. Dies ersetzt keinen Hör-/Bildtest am physischen LED-Counter.

Quellen:
- https://developers.google.com/youtube/iframe_api_reference
- https://developers.google.com/youtube/terms/required-minimum-functionality
- https://www.electronjs.org/docs/latest/api/structures/web-preferences


## Vereinfachte YouTube-Bedienung

Update 21.10.2026: Der Lautstärkeregler wird bei YouTube ausgeblendet; Smartphone-Audio bei lokalen Filmen behält seinen Regler. Ein neu geladener YouTube-Link verwendet den festen Ausgangswert 100 %. Nach Bestätigung der Videoauswahl vom Counter wird unmittelbar ein Play-Befehl gesendet. Damit folgt der Start dem tatsächlichen Ladezustand statt einer geschätzten Wartezeit. Fortschritt und Play/Pause werden weiter vom Counter zurückgemeldet. Fehler oder Verbindungsverlust lösen keinen nachträglichen automatischen Start aus.
