Gibt es eine Möglichkeit, die Live-Ausgabe der Soundkarte von unserem 12.04.1 LTS amd64-Desktop auf ein DLNA-kompatibles externes Gerät in unserem Netzwerk zu streamen? Das Auswählen von Medieninhalten in freigegebenen Verzeichnissen mithilfe von Rygel, miniDLNA und uShare ist immer in Ordnung. Bisher konnten wir jedoch keinen Live-Audiostream über DLNA an einen Client übertragen.
Pulseaudio behauptet, über einen DLNA / UPnP-Medienserver zu verfügen, der zusammen mit Rygel genau dies tun soll. Aber wir konnten es nicht zum Laufen bringen.
Wir haben die in live.gnome.org , dieser Antwort hier und auch in einem ähnlichen Handbuch beschriebenen Schritte befolgt .
In 12.04 LTS können wir das lokale Audiogerät oder unseren GST-Launch-Stream im DLNA-Client auswählen, aber Rygel zeigt die folgende Meldung an und der Client gibt an, dass das Ende der Wiedergabeliste erreicht ist:
(rygel:7380): Rygel-WARNING **: rygel-http-request.vala:97: Invalid seek request
Es gab keine Möglichkeit, Live-Audio-Streams auf dem Client anzuhören.
Erst nach einem Distributions-Upgrade auf 14.04 LTS konnten wir einen Live-Stream auf unseren DLNA-Renderern aus den Einstellungen auswählen, die in der folgenden Antwort dargestellt sind . Dennoch mussten wir nach dem Start von rygel einen etablierten Stream auswählen und konnten keinen neuen Stream auf unsere UPnP-Geräte übertragen. Audio-Metadaten wurden nicht übertragen.
Gibt es andere Alternativen, um das Audio unserer Soundkarte als Live-Stream an einen DLNA-Client zu senden?
Antworten:
Pulseaudio-DLNA
Ich habe einen kleinen Server erstellt, der alle upnp-Renderer in Ihrem Netzwerk erkennt und sie als Senken zu pulseaudio hinzufügt. So können Sie jede Anwendung über pavucontrol steuern, um auf Ihren Upnp-Geräten zu spielen.
Das ist die Art von Komfort, die ich immer wollte, wenn es um Upnp-Geräte unter Linux ging.
Die Anwendung kann von der Quelle oder vom DEB-Paket installiert werden, das von git heruntergeladen werden kann , oder nachdem wir das offizielle ppa: qos / pulseaudio-dlna des Projekts zu unseren Quellen hinzugefügt haben :
Anschließend führen wir pulseaudio-dlna über die Befehlszeile mit folgenden Optionen aus:
Siehe auch die pulseaudio-dlna "About" für mehr.
Wenn ein DLNA-Renderer vorhanden war, können wir ihn aus dem Sound-Menü als Ausgabesenke auswählen:
quelle
python-requests
als Abhängigkeit und konnten den Renderer aus den Standard-Audio-Steuerelementen auswählen - keine Notwendigkeit, Pavucontrol zu installieren.Pavucontrol ist der fehlende Gegenstand in diesem Puzzle! Ich hatte auch alles richtig eingestellt und das externe Gerät (LG TV) zeigte an, dass der Ton abgespielt wurde, aber ich hörte keinen Ton. Heute habe ich pavucontrol installiert und als ich es öffnete, fand ich die Option, Sound über den DLNA-Server zu leiten. Die DLNA-Option wird nur angezeigt, wenn von einem Player Ton an pulseaudio ausgegeben wird.
quelle
Invalid seek request
von Rygel. Medienverzeichnisse sind da, aber mein GST-Stream ist immer EOF.Es tut mir leid, dass ich dir bei Rygel überhaupt nicht helfen kann, aber es könnte eine Alternative geben, die für dich funktionieren könnte.
Das Prinzip ist, dass Sie ein Programm zum Aufzeichnen des Streams auf eine Audiodatei erstellen und dann miniDLNA mit einer benutzerdefinierten Konfiguration starten, die auf das Verzeichnis verweist, in dem sich der Stream befindet.
Beispiel: Angenommen, wir arbeiten in ~ / stream /. Erstellen Sie ~ / stream / minidlna.conf
Speichern Sie dann den Stream in einem Audiofile in diesem Verzeichnis. Die Suche nach "FFmpeg-Soundkarten-Audio aufnehmen" ergab diesen Befehl
aber ich hatte nicht viel glück damit. Eine andere Option ist vlc, wenn Sie eine GUI zur Verfügung haben und dies nicht funktioniert.
Starten Sie dann miniDLNA in einem anderen Terminalfenster:
Es sollte OutputStream.flac finden und dann von Ihrem Netzwerkgerät aus erreichbar sein.
Hoffentlich hast du ein paar Ideen, wenn du es noch nicht gelöst hast.
quelle
Eine Idee, die ich "was ich höre" zu einem DLNA-Renderer (wie WDTV) streamen musste, war, den Stream mit VLC als http-Stream mit
pulse://alsa_output.xxx.monitor
als Eingabe zu servern und ihn in MP3 oder FLAC umzucodieren. Dann wollte ich einen DLNA-Kontrollpunkt verwenden, um den Renderer den Stream abspielen zu lassen. VLC stellt den transkodierten Stream korrekt bereit, lässt jedoch nicht zu, dass der MIME-Typ festgelegt wird, sodass der Renderer die Wiedergabe verweigert.Die nächste Idee war, einen http-Server in Python zu schreiben, der stattdessen den Stream bedient. Es erhält den Audiostream vom Puls mit
parec
, codiert ihn mitflac
(lame
oder was auch immer Sie wollen) und stellt den MIME-Typ korrekt ein.Es funktioniert mit dem folgenden (sehr einfachen) Skript:
Passen Sie die Parameter an, führen Sie sie aus und richten Sie den DLNA-Renderer auf Ihren Computer. Es funktionierte für mich mit einem WDTV als Renderer und einem Android-Telefon mit BubbleUPnP als Kontrollpunkt (Sie können die Stream-URL eingeben, wenn Sie der Wiedergabeliste manuell ein neues Element hinzufügen). Es sollte jedoch mit allen DLNA-kompatiblen Geräten funktionieren.
quelle
HINWEIS: Diese Lösung funktioniert, aber von Massimo wurde eine neuere und wahrscheinlich bessere Lösung vorgeschlagen.
Hier ist eine Antwort für Ubuntu 14.04 (ebenfalls getestet und am 15.04 lauffähig ), der Vollständigkeit halber :
Installiere alle benötigten Pakete:
sudo apt-get install rygel rygel-preferences rygel-gst-launch
Erstellen Sie die Datei
~/.config/rygel.conf
, die Folgendes enthält:Führen Sie die folgenden Befehle über die Befehlszeile aus (diese können bei Bedarf in ein Skript eingefügt werden):
Führen Sie den
paprefs
Befehl aus und stellen Sie sicher, dass beide DLNA-Optionen auf der Registerkarte "Netzwerkserver" aktiviert (markiert) sind.Spielen Sie Audio auf Ihrem Computer ab. Führen Sie das
pavucontrol
Programm aus und ändern Sie auf der Registerkarte "Wiedergabe" das Ausgabegerät in "DLNA / UPnP-Streaming".Zu diesem Zeitpunkt sollten Sie in der Lage sein, die MPEG- und FLAC-Streams von einem DLNA-Client (Renderer / Kontrollpunkt) abzuspielen.
ANMERKUNG: Möglicherweise müssen Sie Ihren Computer neu starten (oder den Puls neu starten), damit die Arbeit beginnen kann.
quelle
Das Python-Skript von Adam ist genau das, was ich brauchte. Brillant. Rygel mit gst-launch funktioniert nicht mit einem meiner Renderer, aber dieses Skript funktioniert mit beiden. In meinem Fall nehme ich einen Audio-Stream-Eingang von Squeezelite (für Squeezebox) und sende ihn an einen Renderer. Das Skript funktioniert auch in der ursprünglichen Form, um Eingaben von einem Pulseaudio-Monitor zu erhalten, falls dies erforderlich ist.
Da ich nichts davon wusste, konnte ich einige Ergänzungen zum Skript vornehmen, die:
i) erlauben, dass es von einem Shell-Skript ausgeführt und mit einem SIGTERM / SIGKILL beendet wird (die 'except'-Anweisung enthält jetzt' systemexit ')
ii) Ermöglicht das Stoppen und Neustarten des Skripts und die erneute Verwendung desselben Ports (da das neu gestartete Skript fehlgeschlagen ist und den Port nicht öffnen konnte, wenn der Renderer ihn noch geöffnet hatte) - (die allow_reuse_address = True-Anweisung)
iii) erstelle eine Version, die die Eingabe von stdin aufnimmt und sie mit sox erneut abtastet, um sie im wav-Format auszugeben (auf Port 8082)
Meine Version sieht also so aus:
quelle
Ich bin mir nicht sicher, ob dies für Sie jetzt nützlich sein wird, aber ich habe einen Beitrag darüber geschrieben, wie dies unter Ubuntu 12.10 funktioniert:
http://dpc.ucore.info/blog/2012/11/07/dlna-streaming-in-ubuntu-12-dot-10/
quelle