App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-04-24 2c7545274f0350e55710dc2c597fdd0dd849853f
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
31
0af362 32 ## Media-Quellen einrichen
U 33
4d64b6 34 Calypso kann in zwei Betriebsarten gestartet werden:
0af362 35
29124c 36 1. NFS-Client
U 37 1. HTTP-Client
0af362 38
U 39 ### NFS-Client
40
4d64b6 41 Mit dem Parameter `nfs-prefix` spielt Calypso Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind. 
0af362 42
U 43 ```
cd13d9 44 java -jar av-director.jar nfs-prefix="/media/mc" port=9090
0af362 45 ```
U 46
4d64b6 47 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 48
U 49 ```
29124c 50 http://rpi4-wz:9090/avd/play?title=/Filme/H/heat.m4v&th=60&ti=60&o=local
0af362 51 ```
U 52
cd13d9 53 wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt. 
U 54
55 #### Betriebsart NFS-Client einrichten
29124c 56
4d64b6 57 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 58
U 59 ```
60 mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0
61 ```
62
63 Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen.
64
65 ```
66 showmount -e mein-media-server
67 ```
68
20a0c8 69 Die Maschine `mein-media-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und Inhalte entsprechend via NFS freigeben.
29124c 70
U 71 ### HTTP-Client
72
4d64b6 73 Das folgende Kommando startet Calypso als HTTP-Client.
dae2e6 74
cd13d9 75 ```
U 76 java -jar av-director.jar port=9090
77 ```
78
79
4d64b6 80 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 81
U 82 ```
fd5fbe 83 http://mein-raspi:9090/avd/play?title=http://mein-media-server:8080/mediacenter/Filme/H/heat.m4v&th=60&ti=60&o=local
29124c 84 ```
U 85
20a0c8 86 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 87
U 88 ## Steuerbefehle
89
4d64b6 90 Die folgenden Service-Endpunkte werden von Calypso bereitgestellt.
29124c 91
185402 92 /avd/play +
U 93 /avd/seek +
94 /avd/pause +
95 /avd/stop +
96 /avd/ping +
97 /avd/server/stop
98
99 ### play
100
101 Text
102
103 ### seek
104
105 Text
106
107 ### pause
108
109 Test
110
111 ### stop
112
113 Text
114
115 ### ping
116
117 Text
118
119 ### server/stop
120
121 Text
0af362 122
4d64b6 123 ## Calypso als Dienst einrichten
0af362 124
4d64b6 125 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 126
0af362 127 ```
4d64b6 128 cd /home/pi/prg/calypso
U 129 sudo cp calypso.service /etc/systemd/system/calypso.service
0af362 130 ```
U 131
132 ### Dienst starten
dae2e6 133
U 134 Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
0af362 135
U 136 ```
4d64b6 137 sudo systemctl start calypso.service
0af362 138 ```
U 139
140 ### Dienst stoppen
141
142 Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
143
144 ```
4d64b6 145 http://mein-raspi:9090/calypso/server/stop
0af362 146 ```
U 147
148 Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
149
150 ```
4d64b6 151 sudo systemctl stop calypso.service
0af362 152 ```
U 153
154 ### Dienst dauerhaft aktivieren
155
dae2e6 156 Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.
0af362 157
U 158 ```
4d64b6 159 sudo systemctl enable calypso.service
0af362 160 ```
U 161
162 ### Dienst deaktivieren
163
164 ```
4d64b6 165 sudo systemctl disable calypso.service
0af362 166 ```
U 167
168 ### Status des Dienstes pruefen
169
170 ```
4d64b6 171 sudo systemctl status calypso
0af362 172 ```