App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-03-24 dae2e6bf9ec2600670e4bf29f7660500f211e9e6
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
U 6 ## Media-Quellen einrichen
7
8 Der AV-Direktor kann in zwei Betriebsarten gestartet werden:
9
29124c 10 1. NFS-Client
U 11 1. HTTP-Client
0af362 12
U 13 ### NFS-Client
14
15 Mit dem Parameter `nfs-prefix` spielt der AV-Direktor Media-Inhalte aus NFS-Quellen ab. 
16
17 ```
cd13d9 18 java -jar av-director.jar nfs-prefix="/media/mc" port=9090
0af362 19 ```
U 20
29124c 21 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 22
U 23 ```
29124c 24 http://rpi4-wz:9090/avd/play?title=/Filme/H/heat.m4v&th=60&ti=60&o=local
0af362 25 ```
U 26
cd13d9 27 wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt. 
U 28
29 #### Betriebsart NFS-Client einrichten
29124c 30
U 31 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 Rasprry 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 32
U 33 ```
34 mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0
35 ```
36
37 Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen.
38
39 ```
40 showmount -e mein-media-server
41 ```
42
29124c 43 Die Maschine `mein-media-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und entsprechende Inhalte via NFS freigeben.
U 44
45 ### HTTP-Client
46
dae2e6 47 Das folgende Kommando startet den AV-Direktor als HTTP-Client.
U 48
cd13d9 49 ```
U 50 java -jar av-director.jar port=9090
51 ```
52
53
54 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 55
U 56 ```
57 http://rpi4-wz:9090/avd/play?title=http://mein-media-server:8080/mc/Filme/H/heat.m4v&th=60&ti=60&o=local
58 ```
59
60 Für das Abspielen über HTTP muss der Raspberry Pui nicht als NFS-Client eingerichtet werden. Der Media-Server muss dann das Streaming über HTTP implementieren.
61
0af362 62
U 63 ## AV-Direktor als Dienst einrichten
64
dae2e6 65 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 66
0af362 67 ```
U 68 cd /home/pi/prg/av-direktor
69 sudo cp avd.service /etc/systemd/system/avd.service
70 ```
71
72 ### Dienst starten
dae2e6 73
U 74 Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
0af362 75
U 76 ```
77 sudo systemctl start avd.service
78 ```
79
80 ### Dienst stoppen
81
82 Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
83
84 ```
85 http://rpi4-wz:9090/avd/server/stop
86 ```
87
88 Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
89
90 ```
91 sudo systemctl stop avd.service
92 ```
93
94 ### Dienst dauerhaft aktivieren
95
dae2e6 96 Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.
0af362 97
U 98 ```
99 sudo systemctl enable avd.service
100 ```
101
102 ### Dienst deaktivieren
103
104 ```
105 sudo systemctl disable avd.service
106 ```
107
108 ### Status des Dienstes pruefen
109
110 ```
111 sudo systemctl status avd
112 ```