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 mpd
auch gestreamt werden.
pulse audio
Gibt es eine Möglichkeit, die Ausgabe auf mpd
statt 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-sink
Audioausgang 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-sink
Pulseaudio (es wird zum Standard-Audiogerät des Systems gemacht). - Der
module-null-sink
Ausgang verfügt über eine.monitor
Quelle, 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
tribblify
von 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. Estribblify
wird im Wesentlichen zu einer „Streaming-Quelle“. - Das
tribblify
Programm 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