Wie streame ich Musik über das Netzwerk auf mehrere Computer?

78

Ergebnisse

Ich möchte in der Lage sein, von einem Raum in einen anderen zu gehen und das gleiche Lied spielen zu hören. Wie Sie, wenn Sie in allen Räumen Radio hörten.

Ich möchte diesen Effekt, aber ich möchte meine eigene Musik hören. Kann ich das tun?

Materialien

  • Ubuntu-Laptop.
  • Mac Computer.

Erste Alternative

Alvar
quelle

Antworten:

48

Ja, mit pulseaudio ist dies problemlos möglich. Sie müssen paprefs installieren und ausführenInstallieren Sie paprefs , damit Ihre Audiogeräte über das Netzwerk verfügbar sind.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Mit diesen Einstellungen können sowohl Tonquellen als auch Senken über das Netzwerk veröffentlicht werden, idealerweise auf einem anderen pulseaudio-Server.

Wenn Sie Ihren Server ohne Desktop Manager eingerichtet haben, müssen Sie zuerst ein Soundsystem installieren (siehe diese Frage ). Sie können /etc/pulse/default.padiese Zeilen dann ohne Kommentar im Abschnitt Netzwerkzugriff bearbeiten :

load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp
load-module module-zeroconf-publish

Wenn Sie den RTP-Absender verwenden möchten, entfernen Sie diese Zeilen aus dem Abschnitt RTP-Absendermodul :

load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 description="RTP Multicast Sink"
load-module module-rtp-send source=rtp.monitor

Der pulseaudio Server muss als Daemon gestartet werden, pulseaudio -Dfalls er noch nicht läuft. Zur Optimierung der Klangqualität können die Einstellungen an die /etc/pulse/daemon.confpersönlichen Bedürfnisse angepasst werden.

Eine alternative Methode zum Streamen von Audio in Ihrem Netzwerk besteht darin, einen Icecast-Server einzurichten (siehe diese Frage ).

Takkat
quelle
14
Im Falle eines Headless-Clients (z. B. eines Pi mit Lautsprechern in meinen Küchenschränken) wäre es hilfreich zu wissen, wie dies vollständig über Konfigurationsdateien und / oder Shell-Befehle eingerichtet wird.
Raphael
Dieses Handbuch ist allgemein genug, um es auf Ubuntu CLI zu befolgen. wiki.archlinux.org/index.php/PulseAudio/…
goetzc
11

Ihre beste Option heißt Music Player Daemon (mpd).

https://secure.wikimedia.org/wikipedia/en/wiki/Music_Player_Daemon

Es ist eine Client-Server-Anwendung. Sie speichern Ihre Musik auf dem Server, stellen dann eine Verbindung zu Ihren Clients her (viele Benutzer können dies gleichzeitig tun) und steuern den Server.

Es ist bereits in Ubuntu, nur apt-get mpd installieren

Und auch eine gute Dokumentation: https://wiki.archlinux.org/index.php/Mpd

MPD kann Musik streamen, sodass Sie viele Kunden (oder Lautsprecher, wenn Sie sie anrufen möchten) zum Abspielen der Musik haben können.

Erwarten Sie aber eigentlich keine gute Qualität. Streaming-Spoils klingen schlecht (egal ob Sie mpd oder pulseaudio verwenden). Es ist eine viel bessere Idee, echte Lautsprecher an den Server anzuschließen und die Laptops nur zur Steuerung zu verwenden.

Lachse
quelle
2
Nun, mein Haus ist zu groß, um Kabel zu verwenden. Deshalb möchte ich den Sound streamen.
Alvar
Sie können streamen, keine Sorge um die Qualität, es wird nicht viel ausmachen, da Ihre drahtlose Verbindung stark genug ist
Rahul Prasad
Wie verderbt Streaming die Klangqualität? WiFi ist ein digitales Übertragungsmedium. Macht MPD verlustfreie Komprimierung? Ich denke nicht, dass das für heutige WiFi-Netzwerke benötigt wird.
nvd
Wow, so eine alte Antwort. Ich erinnere mich nicht einmal mehr, da ich MPD seit dieser Zeit nicht mehr verwendet habe.
Loxs
11

Ich musste nichts Ungewöhnliches tun. Ich habe zwei Netbooks sowohl mit PulseAudio als auch ohne Hardware von Intel. Wie ich es aufgebaut habe, ging ein bisschen so.

Führen Sie paprefs sowohl auf Ihrem Server als auch auf Ihrem Client aus. Stellen Sie sicher, dass auf dem Server die Multicast-Einstellungen aktiviert und die Serverbits überprüft sind. wie so Bildbeschreibung hier eingeben

und das Multicast-Bit Bildbeschreibung hier eingeben

Aktivieren Sie auf dem Client das Bit zum Suchen netzwerkfähiger Geräte Bildbeschreibung hier eingeben und stellen Sie Ihr Ausgabegerät über pavucontrol auf das virtuelle Netzwerkgerät ein Bildbeschreibung hier eingeben

Viola, du solltest jetzt etwas Magie haben

lazyPower
quelle
1
Außer dass dies nichts mit RTP zu tun hat.
Kirelagin
Vielen Dank für dieses tolle Tutorial. Ich habe alle Kontrollkästchen aktiviert, mit der Ausnahme, dass ich mein Ausgabegerät nicht über pavucontrol auf das virtuelle Netzwerkgerät einstellen kann. Soweit ich weiß, geschieht dies über das Bit, in dem in Ihrem Screenshot "Internal Audio Analog Stereo on charmes @ nano" steht. Aber auf meinem System gibt es überhaupt keine solche Schaltfläche. Was mache ich falsch?
User69748
Ich habe diese Anweisungen seit 2011 nicht mehr überprüft, daher haben sich die Einstellungen des Puls-Audio-Dämons höchstwahrscheinlich geändert.
LazyPower
Was ich jetzt (nach dem Neustart) habe, ist ein separater Kanal namens "pulseaudio", der anscheinend an meinen Client weitergeleitet wird. Es fließt jedoch kein Ton durch das Gerät. Und in meinem Rhythmbox-Kanal wird "user @ client" immer noch nicht erwähnt.
user69748
1

Mit dieser Lösung können Sie Ihr Systemaudio streamen, wo immer Sie möchten.
Der Schlüssel hier sind die ALSA-Loopback-Funktionen. Daher müssen Sie zuerst das Loopback-Gerät in ALSA aktivieren, das im PulseAudio-Lautstärkeregler 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

Dabei ist hw: 1,1 das Loopback-Eingabegerät, das mit dem Befehl aufgelistet werden kann aplay -l

dann musst du ein http output plugin für die mpd konfigurieren. Das folgende Beispiel würde wie in 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 es. Wählen Sie auf der Registerkarte Volume Control Playback das Looback-Gerät für Ihre Audioquelle aus.
Schließlich können Sie VLC oder einen anderen Stream-Renderer am Zielpunkt mithilfe der httpd-URL-Adresse verwenden: http://192.168.1.38:8000
Diese Antwort ist auch hier verfügbar

Laplasz
quelle
0

Ich bin nicht sicher, ob so etwas mit DLNA / UPnP erreicht werden kann, da ich selbst nicht damit vertraut bin, aber wirf hier einige Links auf, falls es hilft:

Obwohl ein schnelles Suchergebnis darauf hindeutet, dass keine Synchronisierung möglich ist ...

Ilari Kajaste
quelle
2
DLNA wird nicht empfohlen, da die Wiedergabe nicht synchronisiert werden kann.
Sparhawk
0

Es gibt (noch) keine gute Lösung. Es gibt AVB, aber die Unterstützung für 802.11 beschränkt sich auf die Zeitsynchronisation.

themihai
quelle
-2

Wenn Sie auf ein Android-Telefon streamen möchten, können Sie Foobar2000 auf dem Server und BubbleUPnP (Payware) auf dem Client verwenden.

  1. Wein holen
  2. bekommen foobar_v1.2.5.exe
  3. $ wine foobar2000_v1.2.5.exe
  4. nächstes, nächstes, nächstes ... :)
  5. Holen Sie sich foo_upnp
  6. extrahiere in den Komponentenordner von foobar2000 (der sich wahrscheinlich in befindet ~/.wine/drive_c/Program Files/)
  7. starte foobar2000
  8. gehe zu Library → Configure → Playback → Output → Device und wähle "Null output"
  9. Stellen Sie sicher, dass ufwder relevante Datenverkehr nicht blockiert wird
  10. in BubbleUPnP:
    1. Gehen Sie zu Geräte → Bibliotheken und wählen Sie den foobar2000-Server aus
    2. Wählen Sie unter "Bibliothek" die Option "Stream-Aufnahme wiedergeben".

Der Ansatz hat den Vorteil, dass sich beim Anhalten auf dem Android-Gerät ein Puffer ansammelt (da der Server noch sendet).

Getestet unter Ubuntu (Wine-Version 1.5.28-0ubuntu1~ppa1) und Windows.

Janus Troelsen
quelle