| | |
| | | |
| | | # AV-Direktor |
| | | # Calypso |
| | | |
| | | Eine Anwendung zur Steuerung des Mediaplayers |
| | | [OMXPlayer](https://www.raspberrypi.org/documentation/raspbian/applications/omxplayer.md) |
| | | auf einem Raspberry Pi über HTTP. |
| | | Calypso arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den [VideoLAN Player](https://www.videolan.org/vlc/) 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](https://uhilger.de/data/pg/calypso/). |
| | | |
| | | ## 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](/gitblit/zip/?r=Calypso.git&format=zip) 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 |
| | | 1. 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 |
| | | ``` |