Calypso arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den OMXPlayer um. Auf diese Weise kann ein Raspberry Pi als Abspieler von anderen Geräten aus fernbedient werden, am Pi selbst ist keine Bedienung erforderlich.
Weitere Infos zu Calypso auf der Produktseite.
Zur Ausführung von Calypso wird eine Java-Ablaufumgebung (Java Runtime Environment, JRE) benötigt. Auf der Kommandozeile des Raspberry Pi kann mit dem folgenden Kommando ermittelt werden ob das JRE vorhanden ist.
java -version
Wenn eine Antwort wie z.B.
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Raspbian-1deb10u2)
OpenJDK Server VM (build 11.0.9.1+1-post-Raspbian-1deb10u2, mixed mode)
erscheint, ist das JRE vorhanden. Andernfalls kann es mit folgendem Kommando installiert werden:
sudo apt-get update
sudo apt-get install default-jdk
Der Quellcode von Calypso wird von hier an einen frei wählbaren lokalen Ablageort heruntergeladen und entpackt. In der hier folgenden weiteren Beschreibung wird das so entstandene Verzeichnis Calypso
einschließlich des absoluten Pfades dorthin $CALYPSO
genannt. Anstelle von $CALYPSO
würde man also beispielweise /home/fred/Calypso
notieren, wenn in das persönliche Verzeichnis des Benutzers fred
heruntergealden und entpackt wurde.
Zur Herstellung des Programmes werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux):
cd $CALYPSO
mkdir classes
mkdir dist
$JDK/bin/javac -d classes src/de/uhilger/calypso/*.java src/de/uhilger/calypso/handler/*.java
$JDK/bin/jar -cf dist/calypso.jar -C classes .
rm -r classes
Das fertig verwendbare Programm liegt anschließend unter $CALYPSO/dist/calypso.jar
.
Calypso kann in zwei Betriebsarten gestartet werden:
Mit dem Parameter nfs-prefix
spielt Calypso Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind.
java -jar calypso.jar nfs-prefix="/media/mc" port=9090
In dieser Betriebsart wird dem Inhalt, der beim Abspielen über den Parameter title
angegeben wird, der Präfix aus dem Parameter nfs-prefix
vorangestellt. Wird Calypso beispielsweise mit folgendem URL aufgerufen:
http://rpi4-wz:9090/calypso/play?title=/Filme/H/heat.m4v&th=60&ti=60&o=local
wird die Datei /media/mc/Filme/H/heat.m4v
abgespielt.
Zur Verwendung Calypsos in der Betriebsart NFS-Client muss der Raspberry Pi die Softwarepakete für den NFS-Client installiert haben. Zudem muss auf dem Raspberry Pi in der Datei /etc/fstab
ein Eintrag gemacht werden, der die entsprechende Quelle angibt, z.B.
mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0
Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen.
showmount -e mein-media-server
Die Maschine mein-media-server
in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und Inhalte entsprechend via NFS freigeben.
Das folgende Kommando startet Calypso als HTTP-Client.
java -jar calypso.jar port=9090
Wird der Parameter nfs-prefix
beim Start Calypsos weggelassen, werden im Parameter titel
Uniform Resource Locators (URLs) zu Media-Quellen erwartet wie z.B. in
http://mein-raspi:9090/calypso/play?title=http://mein-media-server:8080/tango/media/Filme/H/heat.m4v&th=60&ti=60&o=local
Für das Abspielen über HTTP muss der Raspberry Pi nicht als NFS-Client eingerichtet werden. Der Media-Server muss dann das Streaming über HTTP implementieren.
Die folgenden Service-Endpunkte werden von Calypso bereitgestellt.
/calypso/play +
/calypso/seek +
/calypso/pause +
/calypso/stop +
/calypso/ping +
/calypso/server/stop
Text
Text
Test
Text
Text
Text
Das Verteilpaket Calypsos enthält eine Beispieldatei namens calypso.service
. Diese verweist auf das ebenfalls im Verteilpaket enthaltene Beispiel-Startskript namens start
. Nach Anpassung der Pfade in calypso.service
kann die Datei wie in folgendem Beispiel in das passende Systemverzeichnis des Raspberry Pi kopiert werden.
cd /home/pi/prg/calypso
sudo cp calypso.service /etc/systemd/system/calypso.service
Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
sudo systemctl start calypso.service
Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
http://mein-raspi:9090/calypso/server/stop
Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
sudo systemctl stop calypso.service
Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.
sudo systemctl enable calypso.service
sudo systemctl disable calypso.service
sudo systemctl status calypso