Aufgabe:
Vor der Bluray-Vorführung sollen schon mal Trailer zu demnächst erscheinenden Kinofilmen abgespielt werden… und das komplett automatisiert.
zusätzliche Hardware:
- ein Chromecast-Dongle
benötigte Software:
- CastNow (gute Installations-Anleitung)
- HarmonyHubControl (Sourceforge-Seite)
- youtube-dl (Wiki bzw Installationsanleitung)
- ffprobe
Ergänzung zur CastNow-Installation:
bei mir lies sich das Programm nach der Installation nicht starten. Es fehlte ein Link zur node-Datei.
ln -s /usr/bin/nodejs /usr/bin/node
1. Aktion mit Trigger anlegen
die Aktion heißt bei mir BD/Trailer – Beamer
in der Start- und End-sequenz sind dann die entsprechenden „Trigger“ gesetzt worden ⇒ Asterisk → Taste 01-an bzw Taste 01-aus.
2. /etc/lircrc anpassen
in meinem Fall wird für die entsprechenden Tasten dann das Skript harmony-trigger.pl mit den entsprechenden Parametern (01 an/aus) aufgerufen
Lirc und irexec müssten neu gestartet werden. Bei mir unter Debian:
systemsctl restart inputlirc.services
3. harmony-trigger.pl anpassen
die entsprechenden Zeilen sehen dann wie auf dem Screenshot aus
- per HarmonyHubControl wird der AV-Receiver auf den Eingang des Chromecasts geschaltet
- per HarmonyHubControl wird die HDMI-Matrix auf den richtigen Eingang gestellt
- es wird das Skript kinotrailer.pl ausgeführt
- nach Durchlauf des Trailer-Skriptes wird per HarmonyHubControl zurück auf den BD-Player-Eingang des AV-Receivers und der HDMI-Matrix geschaltet
4. kinotrailer.pl erstellen
das ist jetzt ein Quick’n’Dirty-Skript. Normalerweise sollte man die YouTube-Api für solche Abfragen heranziehen. Was macht das Skript?
- per Zufall wird zwischen den beiden YouTube-Kanälen KinoCheck und MoviepilotTrailer ausgewählt
- HTML-Quelltext wird per curl in eine Variable geladen
- aus dem Quelltext werden die ersten 3 Video-IDs rausgezogen
- mittels youtube-dl werden diese Videos dann runtergeladen
- es wird die Abspieldauer der Videos ermittelt. Hier hilft ffprobe.
- mit castnow lasse ich dann alle Videos einzeln abspielen
- die runtergeladenen Videos lösche ich dann zum Schluss
Probleme:
Während der Erstellung des Skriptes bin ich auf etliche unangenehme Eigenarten gestoßen. Mit Castnow könnte man auch direkt Youtube-Videos abspielen. Youtube hat aber eine sehr unangehme Next-Autoplay-Funktion. Nach Abspielung wird sofort ein nächstes Video gestartet, das man eventuell nicht sehen möchte. Abhilfe schafft hier nur das Runterladen des Videos, mittels youtube-dl. Castnow funktioniert wunderbar wenn man es direkt auf der Konsole manuell aufruft (auch aus einem php, perl und batch-Skript heraus). Es gibt aber Probleme wenn das Skript per Cron-Job oder per irexec aufgerufen wird. Castnow bleibt nach Abspielung einfach hängen. Abhilfe schafft hier nur das & beim Ausführen des Befehls. Der Nachteil ist die sofortige weitere Abarbeitung des Skriptes, obwohl es noch nicht weiter abgearbeitet werden soll. Also muss das Skript mittels „sleep“ ausgebremst werden. Die variable Sleep-Zeit kann man sich mittels ffprobe plus Puffer erfragen. Nach dem Sleep wird castnow einfach gekillt.
Mit diesem „Baukasten“ an Skripten funktioniert das bei mir sehr sehr gut.
Basti
0 Kommentare.