App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-04-24 eb27be116cb88036a3a35b0486b915db3ffdab0a
commit | author | age
8e2038 1
4d64b6 2 # Calypso
8e2038 3
4d64b6 4 Calypso arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den [OMXPlayer](https://www.raspberrypi.org/documentation/raspbian/applications/omxplayer.md) 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
2c7545 6 Weitere Infos zu Calypso auf der [Produktseite](https://uhilger.de/data/ulrich/prg/calypso/).
U 7
b9e3c5 8 ## Nutzungsvoraussetzungen
U 9
4d64b6 10 Zur Ausführung von Calypso wird eine Java-Ablaufumgebung (Java Runtime Environment, JRE) benötigt, wie sie beim Raspberry Pi OS in der Variante 'full' bereits vorinstalliert ist. 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 ```
27 sudo apt update
28 sudo apt install default-jdk
29 ```
30
eb27be 31 ## Calypso bauen
U 32
33 Hier noch beschreiben
b9e3c5 34
0af362 35 ## Media-Quellen einrichen
U 36
4d64b6 37 Calypso kann in zwei Betriebsarten gestartet werden:
0af362 38
29124c 39 1. NFS-Client
U 40 1. HTTP-Client
0af362 41
U 42 ### NFS-Client
43
4d64b6 44 Mit dem Parameter `nfs-prefix` spielt Calypso Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind. 
0af362 45
U 46 ```
eb27be 47 java -jar calypso.jar nfs-prefix="/media/mc" port=9090
0af362 48 ```
U 49
4d64b6 50 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 51
U 52 ```
eb27be 53 http://rpi4-wz:9090/calypso/play?title=/Filme/H/heat.m4v&th=60&ti=60&o=local
0af362 54 ```
U 55
cd13d9 56 wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt. 
U 57
58 #### Betriebsart NFS-Client einrichten
29124c 59
4d64b6 60 Zur Verwendung Calypsos in der Betriebsart NFS-Client muss der Raspberry Pi die Softwarepakete für den NFS-Client installiert haben, wie sie z.B. im Raspberry Pi OS in der Variante 'full' bereits enthalten sind. Zudem muss auf dem Raspberry Pi in der Datei `/etc/fstab` ein Eintrag gemacht werden, der die entsprechende Quelle angibt, z.B.
0af362 61
U 62 ```
63 mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0
64 ```
65
66 Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen.
67
68 ```
69 showmount -e mein-media-server
70 ```
71
20a0c8 72 Die Maschine `mein-media-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und Inhalte entsprechend via NFS freigeben.
29124c 73
U 74 ### HTTP-Client
75
4d64b6 76 Das folgende Kommando startet Calypso als HTTP-Client.
dae2e6 77
cd13d9 78 ```
eb27be 79 java -jar calypso.jar port=9090
cd13d9 80 ```
U 81
82
4d64b6 83 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 84
U 85 ```
eb27be 86 http://mein-raspi:9090/calypso/play?title=http://mein-media-server:8080/tango/media/Filme/H/heat.m4v&th=60&ti=60&o=local
29124c 87 ```
U 88
20a0c8 89 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 90
U 91 ## Steuerbefehle
92
4d64b6 93 Die folgenden Service-Endpunkte werden von Calypso bereitgestellt.
29124c 94
eb27be 95 /calypso/play +
U 96 /calypso/seek +
97 /calypso/pause +
98 /calypso/stop +
99 /calypso/ping +
100 /calypso/server/stop
185402 101
U 102 ### play
103
104 Text
105
106 ### seek
107
108 Text
109
110 ### pause
111
112 Test
113
114 ### stop
115
116 Text
117
118 ### ping
119
120 Text
121
122 ### server/stop
123
124 Text
0af362 125
4d64b6 126 ## Calypso als Dienst einrichten
0af362 127
4d64b6 128 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 129
0af362 130 ```
4d64b6 131 cd /home/pi/prg/calypso
U 132 sudo cp calypso.service /etc/systemd/system/calypso.service
0af362 133 ```
U 134
135 ### Dienst starten
dae2e6 136
U 137 Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
0af362 138
U 139 ```
4d64b6 140 sudo systemctl start calypso.service
0af362 141 ```
U 142
143 ### Dienst stoppen
144
145 Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
146
147 ```
4d64b6 148 http://mein-raspi:9090/calypso/server/stop
0af362 149 ```
U 150
151 Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
152
153 ```
4d64b6 154 sudo systemctl stop calypso.service
0af362 155 ```
U 156
157 ### Dienst dauerhaft aktivieren
158
dae2e6 159 Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.
0af362 160
U 161 ```
4d64b6 162 sudo systemctl enable calypso.service
0af362 163 ```
U 164
165 ### Dienst deaktivieren
166
167 ```
4d64b6 168 sudo systemctl disable calypso.service
0af362 169 ```
U 170
171 ### Status des Dienstes pruefen
172
173 ```
4d64b6 174 sudo systemctl status calypso
0af362 175 ```