So installieren Sie den DLNA-Medienrenderer

7

Ich möchte meinen Himbeer-Pi verwenden, media rendererdamit ich Wiedergabelisten auf meinem auswählen kann, control pointum Musik aus dem zu spielen media server. Ich habe einige Fragen gefunden, gmediarenderaber keine direkte Antwort, wie man es installiert. Wie kann ich das auf einfache Weise tun?

Ingo
quelle

Antworten:

7

Getestet auf einem Raspberry Pi 4B mit
Raspbian Buster mit Desktop 2020-02-13 aktualisiert am 2020-04-18.
Raspbian Buster Lite 2020-02-13 aktualisiert am 2020-03-26.
Updates durchgeführt mit sudo apt update && sudo apt full-upgrade && sudo reboot.

Mit dem Raspi sollten Sie mit Ihrem lokalen Netzwerk und Ihrem Audioausgang (Kopfhörer, Verstärker usw.) verbunden sein. Zuerst können Sie Ihre Audioausgabe mit dieser kleinen Audiodatei working.wav überprüfen . Natürlich können Sie auch jeden anderen Audioausgabetest durchführen.

pi ~$ sudo apt install alsa-utils
pi ~$ aplay working.wav

Wenn Sie hören, dass es funktioniert, installieren Sie es gmediarendermit den erforderlichen Plugins:

pi ~$ sudo apt install gstreamer1.0-alsa gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-gl gmediarender

Ausführen des Tests: Stellen Sie sicher, dass Sie Mitglied der Audio- und Videogruppen sind . Sie können den Test mit Ctrl+ abbrechen C.

pi ~$ /usr/bin/gmediarender --friendly-name Test --uuid 42 --gstout-initial-volume-db -20 --logfile /dev/stdout

Auf Ihrem Kontrollpunkt (bubbleUPNP oder so ähnlich) sollten Sie einen Renderer mit dem Namen finden Test. Wählen Sie es aus und spielen Sie Musik von Ihrem Medienserver ab, falls Sie einen haben. Dies funktioniert auf Raspbian Buster Light, aber auf Raspbian Buster With Desktop zeigt die Debug-Ausgabe auf dem Bildschirm, dass alles funktionieren sollte, aber es war kein Ton zu hören. Es scheint, dass die Desktop-Version einige weitere zusätzliche Bibliotheken installiert, die gmediarender verwirren, welche Ausgabe verwendet werden soll. Ich musste an --gstout-audiosink alsasinkden oben gezeigten Testanruf anhängen .

Ich fand auch eine verwirrende Warnung:

** (gmediarender:4222): CRITICAL **: 11:38:55.673: file gstdtlsagent.c: line 192 (gst_dtls_agent_init): should not be reached
** (gmediarender:4222): CRITICAL **: 11:38:55.673: gst_dtls_agent_set_property: assertion 'self->priv->ssl_context' failed

Beim Googeln stellte ich fest, dass es nicht kritisch ist (3) und Sie es unterdrücken können, indem Sie eine leere Zeichenfolge auf OPENSSL_CONF = "" setzen . Ein vollständiger Testaufruf für meine Buster Desktop- Installation sieht also folgendermaßen aus:

OPENSSL_CONF="" /usr/bin/gmediarender --friendly-name Test --uuid 42 --gstout-initial-volume-db -20 --logfile /dev/stdout --gstout-audiosink alsasink

Wenn es funktioniert, konfigurieren Sie /etc/default/gmediarenderUPNP_DEVICE_NAME und die INITIAL_VOLUME_DB, wenn Sie möchten. Verwenden Sie keine "Sonderzeichen" wie Umlaut oder so. Der Start wird mit einer Fehlermeldung beendet. Scheint, dass gmediarender UTF-8 immer noch nicht versteht :-(

Wenn in Ihrem Netzwerk mehr als ein Raspi mit gmediarender ausgeführt wird, sollten Sie jedem eine andere UUID zuweisen. Kontrollpunkte können dann verschiedene Medienrenderer in Upnp-Nachrichten unterscheiden. Fügen Sie so etwas hinzu /etc/default/gmediarender:

DAEMON_EXTRA_ARGS="--uuid f4f7681c-3056-11e8-86bd-87a6e4e2c42d"

Sie können mit dem Programm neue UUIDs erhalten uuid(installieren mit sudo apt install uuid).

Wenn Sie nur eine Schnittstelle auf Ihrem RasPi haben, sind Sie mit dem Setup fertig. Starten Sie einfach gmediarender als Service:

pi ~$ sudo systemctl enable gmediarender.service
pi ~$ sudo systemctl start gmediarender.service



Ich hatte das Problem, dass ich gmediarender auf einem RasPi mit einer kabelgebundenen Netzwerkverbindung und einem Zugangspunkt verwende, sodass ich zwei Schnittstellen mit einer IP-Adresse habe. Gmediarender bindet an einen von ihnen und natürlich an den falschen. Sie müssen die IP-Adresse der Schnittstelle angeben, die /etc/default/gmediarenderverwendet werden soll. Meine Schnittstelle ist jedoch über DHCP konfiguriert, sodass sich die IP-Adresse von Zeit zu Zeit ändern kann. Um dieses Problem zu lösen, habe ich ein kleines Bash-Skript erstellt, das die aktuelle IP-Adresse von der Schnittstelle abruft und in diese schreibt /etc/default/gmediarender. Dies ist das Skript:

rpi ~$ cat /usr/local/sbin/gmediarender-setip.sh
#!/bin/bash
# This script binds gmediarender to an interface given in "$1".
# Gmediarender needs the ip address of the interface. The current ip address
# is taken from the interface and set in /etc/default/gmediarender.

if [ $# -eq 0 ]; then
    echo 'no interface name given'
    exit 1
fi
IPADDR="0.0.0.0"
IPADDR=$(/sbin/ip -4 -br addr show $1 | /bin/grep -Po "\\d+\\.\\d+\\.\\d+\\.\\d+")
CMD="s/\(DAEMON_EXTRA_ARGS=.*--ip-address=*\)[^ \"]*/\1$IPADDR/"
/bin/sed -i "$CMD" /etc/default/gmediarender

Vergessen Sie nicht, Berechtigungen festzulegen und nur für root ausführbar zu machen:

rpi ~$ sudo chown root:root /usr/sbin/gmediarender-setip.sh
rpi ~$ sudo chmod 754 /usr/sbin/gmediarender-setip.sh

Führen Sie dieses Skript kurz vor dem Start von gmediarender aus, indem Sie den Dienst erweitern mit:

rpi ~$ sudo systemctl edit gmediarender.service

Fügen Sie im leeren Editor diese Anweisungen mit Ihrem eigenen Schnittstellennamen ein, speichern Sie sie und beenden Sie den Editor:

[Service]
ExecStartPre=/usr/local/sbin/gmediarender-setip.sh eth0

/etc/default/gmediarenderZumindest im Set

DAEMON_EXTRA_ARGS="--ip-address=0.0.0.0"
# or e.g.
DAEMON_EXTRA_ARGS="--uuid f4f7681c-3056-11e8-86bd-87a6e4e2c42d --ip-address=0.0.0.0"

Andernfalls findet das Skript die zu ändernde IP-Adresse nicht. Starten Sie dann gmediarender als Service:

pi ~$ sudo systemctl enable gmediarender.service
pi ~$ sudo systemctl start gmediarender.service


Referenzen:
[1] https://github.com/hzeller/gmrender-resurrect
[2] https://joachim-wilke.de/blog/2016/07/10/UPNP-Renderer-auf-dem-Raspberry-Pi /
[3] https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/811#note_117235

Ingo
quelle