System-Audio über mpd streamen

System-Audio über mpd streamen

Ich verwende mpd, um Musik über auf mein Telefon (angeschlossen an die Hi-Fi-Anlage) zu streamen http.

Dies funktioniert jedoch nur für Songs in meiner mpd-Datenbank. Ich möchte oft Sachen in meinem Browser abspielen und möchte, dass diese mpdauch gestreamt werden.

pulse audioGibt es eine Möglichkeit, die Ausgabe auf mpdstatt auf die Lautsprecher umzuleiten ?

Antwort1

mpd akzeptiert keine Pulseaudio-Eingangsquellen, daher gibt es keine direkte Möglichkeit, Pulseaudio zu routendurchmpd.

Mit Hilfe von Gstreamer und etwas Geschick ist Ihr Vorhaben jedoch immer noch möglich. Mir ist das vor ein paar Jahren gelungen.

Ich hab geschriebendieses Programmwelches die Komponente „Gstreamer Pipeline Script“ dieses Diagramms implementiert:

Stromdiagramm http://tiyukquellmalz.org/sean/stream.svg

Um das Diagramm zusammenzufassen:

  • mpd liest Musikdateien von der Festplatte, dekodiert sie und „spielt“ sie auf einem module-null-sinkAudioausgang vom Typ pulseaudio ab.
  • Alle anderen Programme, die Sie auf Ihrem Computer ausführen möchten und die Ton ausgeben – Adobe Flash, Pieptöne aus der Gnome-Shell, der Webbrowser usw. – senden ihre Audioausgabe auch an module-null-sinkPulseaudio (es wird zum Standard-Audiogerät des Systems gemacht).
  • Der module-null-sinkAusgang verfügt über eine .monitorQuelle, die es Ihnen ermöglicht, das an einen Null-Sink ausgegebene Audiosignal zu übernehmen und es wieder „aufzufangen“, als handele es sich um ein Eingabegerät (z. B. ein Mikrofon).
  • Pulseaudio führt im laufenden Betrieb Software-Mixing für alle Audioprogramme auf dem gesamten Computer durch, einschließlich mpd, Webbrowser und alles andere, das Pulseaudio verwendet.
  • Das tribblifyvon mir geschriebene Programm verwendet GStreamer, um den Pulseaudio-Null-Sink-Monitor-Ton zu erfassen, der gemischten Ton von MPD und allen anderen Programmen auf dem System enthält, führt eine MP3-Kodierung durch und streamt ihn dann an einen Shoutcast-/Icecast-Server. Es tribblifywird im Wesentlichen zu einer „Streaming-Quelle“.
  • Das tribblifyProgramm erkennt automatisch, wenn mpd die Tags des wiedergegebenen Audios ändert, und überträgt diese Tags in den Shoutcast-Stream.
  • Der Icecast- oder Shoutcast-Server, der sich auf demselben oder einem anderen Computer befinden kann, überträgt die Ergebnisse an alle verbundenen Clients.

Antwort2

ja – der Schlüssel liegt hier in den ALSA-Loopback-Funktionen. Sie müssen also zuerst das Loopback-Gerät in ALSA aktivieren, das in der PulseAudio-Lautstärkeregelung als Eingabegerät (und auch als Ausgabegerät) angezeigt wird.

sudo modprobe snd_aloop

Dieses Gerät kann dann zu einem MPD-Server hinzugefügt werden:

mpc add alsa://hw:1,1

wobei hw:1,1 das Loopback-Eingabegerät ist, das mit dem Befehl aufgelistet werden kannaplay -l

dann müssen Sie eineHTTP-Ausgabe-Pluginfür den mpd. würde das folgende Beispiel wie folgt aussehen:/etc/mpd.conf

 audio_output {
    type            "httpd"
    name            "My HTTP Stream"
    encoder         "vorbis"          # optional, vorbis or lame
    port            "8000"
    bind_to_address "192.168.1.38"               # optional, IPv4 or IPv6
    quality         "5.0"                   # do not define if bitrate is d$
#   bitrate         "128"                   # do not define if quality is d$
    format          "44100:16:1"
    max_clients     "0"                     # optional 0=no limit
 }  

das ist alles. Wählen Sie das Wiedergabegerät für Ihre Audioquelle auf der Registerkarte „Lautstärkeregelung/Wiedergabe“ aus.
Schließlich können Sie VLC oder einen anderen Stream-Renderer am Zielpunkt verwenden, indem Sie die httpd-URL-Adresse verwenden:http://192.168.1.38:8000

verwandte Informationen