App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2023-03-01 81530df1e3b43943a11ab3032ad235b319b95968
README.md
@@ -1,91 +1,51 @@
# 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 [mpv Player](https://mpv.io/) 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/pg/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
## Media-Quellen einrichen
Der AV-Direktor kann in zwei Betriebsarten gestartet werden:
. NFS-Client
. HTTP-Client
### NFS-Client
Mit dem Parameter `nfs-prefix` spielt der AV-Direktor Media-Inhalte aus NFS-Quellen ab.
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 -jar av-director.jar nfs-prefix="/media/mc" port=9000
java -version
```
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
Wenn eine Antwort wie z.B.
```
http://rpi4-wz:9090/avd/play?title=/Filme/H/heat.m4v
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)
```
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.
erscheint, ist das JRE vorhanden. Andernfalls kann es mit folgendem Kommando installiert werden:
```
mein-media-server:/media/extssd/mc /media/mc nfs rw 0 0
sudo apt-get update
sudo apt-get install default-jdk
```
Welche Quellen für einen solchen Eintrag verfügbar sind lässt sich auf dem Raspberry Pi mit folgendem Kommando sehen.
## 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):
```
showmount -e mein-media-server
cd $CALYPSO
mkdir classes
mkdir dist
$JDK/bin/javac -d classes src/de/uhilger/calypso/*.java src/de/uhilger/calypso/actor/*.java  src/de/uhilger/calypso/http/*.java
$JDK/bin/jar -cf dist/calypso.jar -C classes .
rm -r classes
```
Die Maschine `mein-mdeia-server` in den obigen Beispielen muss dafür als NFS-Server eingerichtet sein und entsprechende Inhalte via NFS freigeben.
Das fertig verwendbare Programm liegt anschließend unter `$CALYPSO/dist/calypso.jar`.
## AV-Direktor als Dienst einrichten
```
cd /home/pi/prg/av-direktor
sudo cp avd.service /etc/systemd/system/avd.service
```
### Dienst starten
```
sudo systemctl start avd.service
```
### Dienst stoppen
Der laufende Dienst kann mit folgendem Signal via HTTP veranlasst werden, sich zu beenden.
```
http://rpi4-wz:9090/avd/server/stop
```
Ueber systemd kann stattdessen der Prozess wie folgt 'hart' beendet werden.
```
sudo systemctl stop avd.service
```
### Dienst dauerhaft aktivieren
Der folgende Befehl bewirkt, dass der Dienst nach einem Neustart automatisch startet.
```
sudo systemctl enable avd.service
```
### Dienst deaktivieren
```
sudo systemctl disable avd.service
```
### Status des Dienstes pruefen
```
sudo systemctl status avd
```