App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-04-24 eb27be116cb88036a3a35b0486b915db3ffdab0a
README.md
@@ -1,11 +1,13 @@
# AV-Direktor
# Calypso
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.
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.
Weitere Infos zu Calypso auf der [Produktseite](https://uhilger.de/data/ulrich/prg/calypso/).
## Nutzungsvoraussetzungen
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 folgenden Kommando ermittelt werden ob das JRE vorhanden ist.
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.
```
java -version
@@ -26,33 +28,36 @@
sudo apt install default-jdk
```
## Calypso bauen
Hier noch beschreiben
## Media-Quellen einrichen
Der AV-Direktor kann in zwei Betriebsarten gestartet werden:
Calypso kann in zwei Betriebsarten gestartet werden:
1. NFS-Client
1. HTTP-Client
### NFS-Client
Mit dem Parameter `nfs-prefix` spielt der AV-Direktor Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind.
Mit dem Parameter `nfs-prefix` spielt Calypso Media-Inhalte aus Quellen ab, die über das Network File System (NFS) eingebunden sind.
```
java -jar av-director.jar nfs-prefix="/media/mc" port=9090
java -jar calypso.jar nfs-prefix="/media/mc" port=9090
```
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:
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:
```
http://rpi4-wz:9090/avd/play?title=/Filme/H/heat.m4v&th=60&ti=60&o=local
http://rpi4-wz:9090/calypso/play?title=/Filme/H/heat.m4v&th=60&ti=60&o=local
```
wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt. 
#### Betriebsart NFS-Client einrichten
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.
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.
```
mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0
@@ -68,33 +73,63 @@
### HTTP-Client
Das folgende Kommando startet den AV-Direktor als HTTP-Client.
Das folgende Kommando startet Calypso als HTTP-Client.
```
java -jar av-director.jar port=9090
java -jar calypso.jar port=9090
```
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
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
```
http://mein-raspi:9090/avd/play?title=http://mein-media-server:8080/mediacenter/Filme/H/heat.m4v&th=60&ti=60&o=local
http://mein-raspi:9090/calypso/play?title=http://mein-media-server:8080/tango/media/Filme/H/heat.m4v&th=60&ti=60&o=local
```
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.
## Steuerbefehle
Hier beschreiben
Die folgenden Service-Endpunkte werden von Calypso bereitgestellt.
/calypso/play +
/calypso/seek +
/calypso/pause +
/calypso/stop +
/calypso/ping +
/calypso/server/stop
## AV-Direktor als Dienst einrichten
### play
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.
Text
### seek
Text
### pause
Test
### stop
Text
### ping
Text
### server/stop
Text
## Calypso als Dienst einrichten
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.
```
cd /home/pi/prg/av-direktor
sudo cp avd.service /etc/systemd/system/avd.service
cd /home/pi/prg/calypso
sudo cp calypso.service /etc/systemd/system/calypso.service
```
### Dienst starten
@@ -102,7 +137,7 @@
Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
```
sudo systemctl start avd.service
sudo systemctl start calypso.service
```
### Dienst stoppen
@@ -110,13 +145,13 @@
Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
```
http://mein-raspi:9090/avd/server/stop
http://mein-raspi:9090/calypso/server/stop
```
Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
```
sudo systemctl stop avd.service
sudo systemctl stop calypso.service
```
### Dienst dauerhaft aktivieren
@@ -124,17 +159,17 @@
Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart des Raspberry Pi automatisch startet.
```
sudo systemctl enable avd.service
sudo systemctl enable calypso.service
```
### Dienst deaktivieren
```
sudo systemctl disable avd.service
sudo systemctl disable calypso.service
```
### Status des Dienstes pruefen
```
sudo systemctl status avd
sudo systemctl status calypso
```