Ein Programm zur Steuerung der Mediawiedergabe auf einem Raspberry Pi.

1. Einleitung

Programme zur Mediawiedergabe werden häufig über ihre eigene Bedienoberfläche auf dem Gerät gesteuert, auf dem sie installiert sind. Das erfordert zusätzliche Geräte wie z.B. Bildschirm oder Tastatur. Für einen Media-Zuspieler ist das keine optimale Konfiguration, weshalb für manche Media-Software Zusätze nachrüstbar sind, die eine Steuerung von anderen Geräten aus erlauben.

Teils muss für eine solche Fernbedienung der Fernseher laufen, damit die Bedienoberfläche des Media-Zuspielers dargestellt werden kann. Teils gelingt die Fernbedienung auf dem Browser oder in einer eigens zu installierenden App des als Fernbedienung verwendeten Gerätes. Bei näherem Hinsehen lassen viele dieser Angebote aber zu wünschen übrig.

Calypso geht einen anderen Weg und stattet einen Raspberry Pi lediglich mit einer schlanken Möglichkeit aus, die Mediawiedergabe mit HTTP-Signalen zu steuern. Eine eigene Bedienoberfläche und Geräte wie Maus oder Tastatur sind nicht nötig. Mit Calypso ausgestattet wird das kleine Kästchen einfach neben Fernseher oder Stereoanlage gestellt und schon kann aus jedem Browser heraus die Wiedergabe gesteuert werden.

2. Vorbereitung

Zur Ausführung von Calypso ist ein Raspberry Pi mit Java und dem VideoLAN Player erforderlich. Die folgenden Schritte schaffen die nötigen Voraussetzungen.

  1. Den Raspberry Pi in Betrieb nehmen [5], falls noch nicht geschehen

  2. Mit dem Befehl vlc --version überprüfen, ob der VideoLAN Player installiert ist

  3. Den VideoLAN Player [1] installieren, falls es noch nicht vorhanden ist
    sudo apt-get install vlc

  4. Mit dem Befehl java -version überprüfen, ob Java installiert ist

  5. Das JDK-Paket [2] installieren, falls Java noch nicht vorhanden ist
    sudo apt-get install openjdk-11-jdk

Nun ist der Raspberry Pi bereit zur Installation von Calypso wie im nächsten Kapitel beschrieben.

3. Installation

Mit Abschluss der Vorbereitung sind folgende Schritte zur Installation von Calypso nötig.

  1. Die Datei calypso.zip herunterladen

  2. Die Datei calypso.zip an einen Ort der Wahl entpacken, z.B. nach /home/pi/prg/calypso

Nun ist Calypso bereit zum Start wie im nächsten Kapitel beschrieben.

Damit Calypso bereits läuft, wenn der Raspberry Pi gestartet wurde, kann das Programm als Dienst eingerichtet werden.

4. Start

Calypso wird als Programm gestartet, das auf HTTP-Steuerbefehle lauscht und diese ausführt. Der Aufruf geschieht wie folgt.

Calypso zum Abspielen von HTTP-Inhalten aufrufen
java -jar calypso.jar port=9090 player=vlc ctx=/calypso

Mit dem obigen Aufruf werden URLs als Parameter zur Angabe des abzuspielenden Titels erwartet und an den VideoLAN Player durchgereicht. Diese werden dann über HTTP-Streaming abgespielt. Mit der Angabe player=vlc wird der VideoLAN Player zum Abspielen verwendet.

Der zusätzliche Parameter nfs-prefix erlaubt zudem Inhalte wiederzugeben, die über NFS für den Raspberry Pi erreichbar sind. In diesem Fall werden abzuspielende Titel als relative Pfadangabe übergeben und mit dem Präfix laut Parameter nfs-prefix kombiniert. Für diese Betriebsart lautet der Aufruf wie folgt.

Calypso zum Abspielen von NFS-Inhalten aufrufen
java -jar calypso.jar port=9090 nfs-prefix="/media/mc" player=vlc ctx=/calypso

Mit den obigen Aufrufen ist Calypso über den in port angegebenen Port per HTTP steuerbar. Zwei weitere Funktionen beeinflussen die Protokollierung wie folgt.

Konfiguration der Protokollierung

Die Aktivitäten Calypsos können protokolliert und mit einer Konfigurationsdatei eingestellt werden, deren Name und Ablageort über den Parameter java.util.logging.config.file benannt wird. Der Parameter zur Protokollierung wird beim Start Calypsos wie folgt übergeben.

Startbefehl für Calypso mit Java-Parametern
java -Djava.util.logging.config.file=logging.properties -jar calypso.jar port=9090 player=vlc ctx=/calypso &

4.1. Start überprüfen

Über den folgenden URL kann überprüft werden, ob Calypso läuft (Annahme: Der Raspberry Pi hat den Namen rpi4).

http://rpi4:9090/calypso/ping

Wird die Antwort ping zurückgegben, läuft Calypso.

5. Beenden

Calypso kann einfach beendet werden, indem mit Strg-C der laufende Prozess beendet wird. Ferner lässt sich Calypso auch per HTTP wie folgt beenden.

http://rpi4:9090/calypso/server/stop

6. Calypso bedienen

Die Bedienung von Calypso funktioniert am besten mit dem Programm Tango [4], das speziell für die Zusammenarbeit mit Calypso ausgelegt ist. Das folgende Schaubild zeigt deren Zusammenspiel.

tango calypso
Abb. 1. Tango und Calypso im Zusammenspiel

Nachfolgend zudem einige Programmbefehle, wie sie auch in Tango eingebaut und zur Verwendung von Calypso direkt oder zum Einbau in Drittprogramme geeignet sind. Eine vollständige API-Dokumentation ist noch in Arbeit.

6.1. Abspielen

Zum Abspielen eines Titels wird ein HTTP GET Aufruf an einen Uniform Resource Locator (URL) wie in folgendem Beispiel abgegeben.

Abspielen eines Titels
http://rpi4:9090/calypso/play?&titel=http://example.com:9090/srv/Filme/S/sound_city.m4v

Auf Wunsch gibt Calypso eine Rückmeldung, wenn das Abspielen des Titels beendet ist.

Abspielen eines Titels mit Rückmeldung
http://rpi4-wz:9090/calypso/play?&titel=http://example.com:9090/srv/Filme/S/sound_city.m4v&r=http://mein-server:8080/mc/abspielenBeendet/11/3

6.1.1. Parameter

titel

URL des Titels, der abgespielt werden soll

r

URL für Rückmeldung (optional)

7. Dienst einrichten

Zur Einrichtung von Calypso als Dienst wird auf dem Raspberry Pi wird eine Datei namens calypso.service mit folgendem Inhalt erstellt. Die Angaben unter ExecStart und WorkingDirectory müssen dabei auf den Ablageort von Calypso verweisen.

[Unit]
Description=Calypso
After=network.target syslog.target

[Service]
ExecStart=/home/pi/prg/calypso/start
WorkingDirectory=/home/pi/prg/calypso
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
Type=forking

[Install]
WantedBy=multi-user.target

Die Datei wie folgt ins Verzeichnis /etc/systemd/system kopieren.

sudo cp calypso.service /etc/systemd/system/calypso.service

Zum Starten dient der folgende Befehl.

sudo systemctl start calypso.service

Der folgende Befehl stoppt den Dienst.

sudo systemctl stop calypso.service

Wenn das Starten und Stoppen verläuft wie vorgesehen, kann der Dienst wie folgt aktiviert werden.

sudo systemctl enable calypso.service

Damit wird Calypso stets gestartet wenn der Raspberry Pi eingeschaltet wird.

8. Versionshistorie

8.1. Version 1

  1. April 2021: Initiale Fassung

8.2. Version 2

  1. Dezember 2021: Voraussetzungen und Installation präzisiert.

8.3. Version 3

  1. Dezember 2022: Umgestellt auf VLC

9. Verweise