App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
edit | blame | history | raw

Calypso

Calypso arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den VideoLAN Player 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.

Nutzungsvoraussetzungen

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

Calypso erhalten

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.

Programm herstellen

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.

Media-Quellen einrichen

Calypso kann in zwei Betriebsarten gestartet werden:

  1. NFS-Client
  2. HTTP-Client

NFS-Client

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

wird die Datei /media/mc/Filme/H/heat.m4v abgespielt.

Betriebsart NFS-Client einrichten

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.

HTTP-Client

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

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.

Steuerbefehle

Die folgenden Service-Endpunkte werden von Calypso bereitgestellt.

/calypso/play +
/calypso/seek +
/calypso/pause +
/calypso/stop +
/calypso/ping +
/calypso/server/stop

play

Text

seek

Text

pause

Test

stop

Text

ping

Text

server/stop

Text

Calypso als Dienst einrichten

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

Dienst starten

Mit folgendem Kommando kann der Dienst probehalber gestartet werden.

sudo systemctl start calypso.service

Dienst stoppen

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

Dienst dauerhaft aktivieren

Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.

sudo systemctl enable calypso.service

Dienst deaktivieren

sudo systemctl disable calypso.service

Status des Dienstes pruefen

sudo systemctl status calypso