App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2022-12-30 8771ec89633aff2040c8e9c9b25c98778f19bedb
README.md
@@ -1,35 +1,80 @@
# AV-Direktor
# Calypso
Eine Anwendung zur Steuerung des Mediaplayers
[OMXPlayer](https://www.raspberrypi.org/documentation/raspbian/applications/omxplayer.md)
Calypso arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den [VideoLAN Player](https://www.videolan.org/vlc/) um. Auf diese Weise kann ein Raspberry Pi als Abspieler von anderen Geräten aus fernbedient werden, am Pi selbst ist keine Bedienung erforderlich.
## Video und Audio abspielen
Weitere Infos zu Calypso auf der [Produktseite](https://uhilger.de/data/ulrich/prg/calypso/).
Der AV-Direktor arbeitet als Empfänger von HTTP-Signalen und setzt diese in Kommandos an den OMXPlayer um. Auf diese Weise kann ein Raspberry Pi als Abspieler von anderen Geräten aus fernbedient werden, am Pi selbst ist keine Bedienung erforderlich.
## Nutzungsvoraussetzungen
Zur Ausführung von Calypso wird eine Java-Ablaufumgebung (Java Runtime Environment, JRE) benötigt. Auf der Kommandozeile des Raspberry Pi kann mit dem folgenden Kommando ermittelt werden ob das JRE vorhanden ist.
```
java -version
```
Wenn eine Antwort wie z.B.
```
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Raspbian-1deb10u2)
OpenJDK Server VM (build 11.0.9.1+1-post-Raspbian-1deb10u2, mixed mode)
```
erscheint, ist das JRE vorhanden. Andernfalls kann es mit folgendem Kommando installiert werden:
```
sudo apt-get update
sudo apt-get install default-jdk
```
## Calypso erhalten
Der Quellcode von Calypso wird von hier an einen frei wählbaren lokalen Ablageort [heruntergeladen](/gitblit/zip/?r=Calypso.git&format=zip) und entpackt. In der hier folgenden weiteren Beschreibung wird das so entstandene Verzeichnis `Calypso` einschließlich des absoluten Pfades dorthin `$CALYPSO` genannt. Anstelle von `$CALYPSO` würde man also beispielweise `/home/fred/Calypso` notieren, wenn in das persönliche Verzeichnis des Benutzers `fred` heruntergealden und entpackt wurde.
## Programm herstellen
Zur Herstellung des Programmes werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux):
```
cd $CALYPSO
mkdir classes
mkdir dist
$JDK/bin/javac -d classes src/de/uhilger/calypso/*.java src/de/uhilger/calypso/handler/*.java
$JDK/bin/jar -cf dist/calypso.jar -C classes .
rm -r classes
```
Das fertig verwendbare Programm liegt anschließend unter `$CALYPSO/dist/calypso.jar`.
## Media-Quellen einrichen
Der AV-Direktor kann in zwei Betriebsarten gestartet werden:
Calypso kann in zwei Betriebsarten gestartet werden:
. NFS-Client
. HTTP-Client
1. NFS-Client
1. HTTP-Client
### NFS-Client
Mit dem Parameter `nfs-prefix` spielt der AV-Direktor Media-Inhalte aus NFS-Quellen ab.
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=9000
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, besagter Präfix vorangestellt. Wird beispielsweise der AV-Direktor aufgerufen mit
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
http://rpi4-wz:9090/calypso/play?title=/Filme/H/heat.m4v
```
wird die Datei `/media/mc/Filme/H/heat-m4v` abgespielt. Zur Verwendung des AV-Direktors in der Betriebsart NFS Client muss der Raspberry Pi die Pakete für den NFS Client installiert bekommen und es muss auf dem Raspberry Pi in der Datei `/etc/fstab` ein Eintrag gemacht werden, der die entsprechende Quelle angibt, z.B.
wird die Datei `/media/mc/Filme/H/heat.m4v` abgespielt.
#### Betriebsart NFS-Client einrichten
Zur Verwendung Calypsos in der Betriebsart NFS-Client muss der Raspberry Pi die Softwarepakete für den NFS-Client installiert haben. 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
@@ -41,19 +86,75 @@
showmount -e mein-media-server
```
Die Maschine `mein-mdeia-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und entsprechende Inhalte via NFS freigeben.
Die Maschine `mein-media-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und Inhalte entsprechend via NFS freigeben.
## AV-Direktor als Dienst einrichten
### HTTP-Client
Das folgende Kommando startet Calypso als HTTP-Client.
```
cd /home/pi/prg/av-direktor
sudo cp avd.service /etc/systemd/system/avd.service
java -jar calypso.jar port=9090
```
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/calypso/play?title=http://mein-media-server:8080/tango/media/Filme/H/heat.m4v
```
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
Die folgenden Service-Endpunkte werden von Calypso bereitgestellt.
/calypso/play +
/calypso/seek +
/calypso/pause +
/calypso/stop +
/calypso/ping +
/calypso/server/stop
### play
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/calypso
sudo cp calypso.service /etc/systemd/system/calypso.service
```
### Dienst starten
Mit folgendem Kommando kann der Dienst probehalber gestartet werden.
```
sudo systemctl start avd.service
sudo systemctl start calypso.service
```
### Dienst stoppen
@@ -61,31 +162,31 @@
Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
```
http://rpi4-wz: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
Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart automatisch startet.
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
```