App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-03-24 20a0c81c0d69a8f831cf5ecce8398a85097bd250
commit | author | age
8e2038 1
U 2 # AV-Direktor
3
29124c 4 Der AV-Direktor 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
20a0c8 8 Der AV-Direktor ist ein winziges Java-Programm, zu dessen Ausführung eine Java-Ablaufumgebung (Java Runtime Environment, JRE) benötigt wird, wie sie beim Raspberry Pi OS in der Variante 'full' bereits vorinstalliert ist. Auf der Kommandozeile des Raspberry Pi kann mit dem 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
32 Der AV-Direktor kann in zwei Betriebsarten gestartet werden:
33
29124c 34 1. NFS-Client
U 35 1. HTTP-Client
0af362 36
U 37 ### NFS-Client
38
20a0c8 39 Mit dem Parameter `nfs-prefix` spielt der AV-Direktor 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
29124c 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 der AV-Direktor 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
20a0c8 55 Zur Verwendung des AV-Direktors 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
dae2e6 71 Das folgende Kommando startet den AV-Direktor als HTTP-Client.
U 72
cd13d9 73 ```
U 74 java -jar av-director.jar port=9090
75 ```
76
77
78 Wird der Parameter `nfs-prefix` beim Start des AV-Direktors weggelassen, werden im Parameter `titel` Uniform Resource Locators (URLs) zu Media-Quellen erwartet wie z.B. in
29124c 79
U 80 ```
81 http://rpi4-wz:9090/avd/play?title=http://mein-media-server:8080/mc/Filme/H/heat.m4v&th=60&ti=60&o=local
82 ```
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.
29124c 85
0af362 86
U 87 ## AV-Direktor als Dienst einrichten
88
dae2e6 89 Das Verteilpaket des AV-Direktors enthält eine Beispieldatei namens `avd.service`. Diese verweist auf das ebenfalls im Verteilpaket enthaltene Beispiel-Startskript namens `start`. Nach Anpassung der Pfade in `avd.service` kann die Datei wie in folgendem Beispiel in das passende Systemverzeichnis des Raspberry Pi kopiert werden.
U 90
0af362 91 ```
U 92 cd /home/pi/prg/av-direktor
93 sudo cp avd.service /etc/systemd/system/avd.service
94 ```
95
96 ### Dienst starten
dae2e6 97
U 98 Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
0af362 99
U 100 ```
101 sudo systemctl start avd.service
102 ```
103
104 ### Dienst stoppen
105
106 Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
107
108 ```
109 http://rpi4-wz:9090/avd/server/stop
110 ```
111
112 Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
113
114 ```
115 sudo systemctl stop avd.service
116 ```
117
118 ### Dienst dauerhaft aktivieren
119
dae2e6 120 Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.
0af362 121
U 122 ```
123 sudo systemctl enable avd.service
124 ```
125
126 ### Dienst deaktivieren
127
128 ```
129 sudo systemctl disable avd.service
130 ```
131
132 ### Status des Dienstes pruefen
133
134 ```
135 sudo systemctl status avd
136 ```