App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2023-01-08 929228226e08e352769810f729f0e9644a781bec
commit | author | age
8e2038 1
4d64b6 2 # Calypso
8e2038 3
8771ec 4 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.
0af362 5
aa9b42 6 Weitere Infos zu Calypso auf der [Produktseite](https://uhilger.de/data/pg/calypso/).
2c7545 7
b9e3c5 8 ## Nutzungsvoraussetzungen
U 9
a337bf 10 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.
b9e3c5 11
U 12 ```
13 java -version
14 ```
15
20a0c8 16 Wenn eine Antwort wie z.B.
b9e3c5 17
U 18 ```
19 openjdk version "11.0.9.1" 2020-11-04
20 OpenJDK Runtime Environment (build 11.0.9.1+1-post-Raspbian-1deb10u2)
21 OpenJDK Server VM (build 11.0.9.1+1-post-Raspbian-1deb10u2, mixed mode)
22 ```
23
20a0c8 24 erscheint, ist das JRE vorhanden. Andernfalls kann es mit folgendem Kommando installiert werden:
b9e3c5 25
U 26 ```
e4ac75 27 sudo apt-get update
U 28 sudo apt-get install default-jdk
b9e3c5 29 ```
U 30
05d10e 31 ## Calypso erhalten
eb27be 32
05d10e 33 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.
U 34
35 ## Programm herstellen
36
37 Zur Herstellung des Programmes werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux):
38
39 ```
40 cd $CALYPSO
41 mkdir classes
42 mkdir dist
43
44 $JDK/bin/javac -d classes src/de/uhilger/calypso/*.java src/de/uhilger/calypso/handler/*.java
45
46 $JDK/bin/jar -cf dist/calypso.jar -C classes .
47 rm -r classes
48 ```
49
50 Das fertig verwendbare Programm liegt anschließend unter `$CALYPSO/dist/calypso.jar`.
b9e3c5 51
0af362 52 ## Media-Quellen einrichen
U 53
4d64b6 54 Calypso kann in zwei Betriebsarten gestartet werden:
0af362 55
29124c 56 1. NFS-Client
U 57 1. HTTP-Client
0af362 58
U 59 ### NFS-Client
60
4d64b6 61 Mit dem Parameter `nfs-prefix` spielt Calypso Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind. 
0af362 62
U 63 ```
eb27be 64 java -jar calypso.jar nfs-prefix="/media/mc" port=9090
0af362 65 ```
U 66
4d64b6 67 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:
0af362 68
U 69 ```
8771ec 70 http://rpi4-wz:9090/calypso/play?title=/Filme/H/heat.m4v
0af362 71 ```
U 72
cd13d9 73 wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt. 
U 74
75 #### Betriebsart NFS-Client einrichten
29124c 76
a337bf 77 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.
0af362 78
U 79 ```
80 mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0
81 ```
82
83 Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen.
84
85 ```
86 showmount -e mein-media-server
87 ```
88
20a0c8 89 Die Maschine `mein-media-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und Inhalte entsprechend via NFS freigeben.
29124c 90
U 91 ### HTTP-Client
92
4d64b6 93 Das folgende Kommando startet Calypso als HTTP-Client.
dae2e6 94
cd13d9 95 ```
eb27be 96 java -jar calypso.jar port=9090
cd13d9 97 ```
U 98
99
4d64b6 100 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
29124c 101
U 102 ```
8771ec 103 http://mein-raspi:9090/calypso/play?title=http://mein-media-server:8080/tango/media/Filme/H/heat.m4v
29124c 104 ```
U 105
20a0c8 106 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.
fd5fbe 107
U 108 ## Steuerbefehle
109
4d64b6 110 Die folgenden Service-Endpunkte werden von Calypso bereitgestellt.
29124c 111
eb27be 112 /calypso/play +
U 113 /calypso/seek +
114 /calypso/pause +
115 /calypso/stop +
116 /calypso/ping +
117 /calypso/server/stop
185402 118
U 119 ### play
120
121 Text
122
123 ### seek
124
125 Text
126
127 ### pause
128
129 Test
130
131 ### stop
132
133 Text
134
135 ### ping
136
137 Text
138
139 ### server/stop
140
141 Text
0af362 142
4d64b6 143 ## Calypso als Dienst einrichten
0af362 144
4d64b6 145 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.
dae2e6 146
0af362 147 ```
4d64b6 148 cd /home/pi/prg/calypso
U 149 sudo cp calypso.service /etc/systemd/system/calypso.service
0af362 150 ```
U 151
152 ### Dienst starten
dae2e6 153
U 154 Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
0af362 155
U 156 ```
4d64b6 157 sudo systemctl start calypso.service
0af362 158 ```
U 159
160 ### Dienst stoppen
161
162 Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
163
164 ```
4d64b6 165 http://mein-raspi:9090/calypso/server/stop
0af362 166 ```
U 167
168 Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
169
170 ```
4d64b6 171 sudo systemctl stop calypso.service
0af362 172 ```
U 173
174 ### Dienst dauerhaft aktivieren
175
dae2e6 176 Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.
0af362 177
U 178 ```
4d64b6 179 sudo systemctl enable calypso.service
0af362 180 ```
U 181
182 ### Dienst deaktivieren
183
184 ```
4d64b6 185 sudo systemctl disable calypso.service
0af362 186 ```
U 187
188 ### Status des Dienstes pruefen
189
190 ```
4d64b6 191 sudo systemctl status calypso
0af362 192 ```