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