Jak przesyłać strumieniowo muzykę przez sieć do wielu komputerów?

78

Wyniki

Chcę móc chodzić z jednego pokoju do drugiego i słyszeć tę samą piosenkę. Tak jak robisz, jeśli słuchasz radia we wszystkich pokojach.

Chcę tego efektu, ale chcę słuchać własnej muzyki, czy można to zrobić?

Materiały

  • Ubuntu laptop.
  • Komputer Mac.

Pierwsza alternatywa

Alvar
źródło

Odpowiedzi:

48

Tak, z pulseaudio można to łatwo zrobić. Będziesz musiał zainstalować i uruchomić paprefs Zainstaluj paprefs , dzięki którym Twoje urządzenia dźwiękowe będą dostępne w sieci.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Te ustawienia umożliwiają publikowanie zarówno źródeł dźwięku, jak i dźwięków w sieci, najlepiej na innym serwerze pulseaudio.

Jeśli masz konfigurację serwera bez menedżera pulpitu, musisz najpierw zainstalować system dźwiękowy (patrz to pytanie ). Następnie możesz edytować /etc/pulse/default.paodkomentowanie tych linii w sekcji Dostęp do sieci :

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

Jeśli chcesz użyć nadawcy RTP, odkomentuj te linie , sekcja modułu nadawcy RTP :

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

Serwer pulseaudio musi zostać uruchomiony jako demon pulseaudio -Dna wypadek, gdyby jeszcze nie działał. Aby zoptymalizować ustawienia jakości dźwięku, /etc/pulse/daemon.confmożna je dostosować do osobistych potrzeb.

Alternatywną metodą przesyłania strumieniowego dźwięku w sieci byłoby skonfigurowanie serwera Icecast (patrz to pytanie ).

Takkat
źródło
14
W przypadku bezgłowego klienta (powiedzmy Pi z głośnikami na moich szafkach kuchennych) dobrze byłoby wiedzieć, jak to ustawić całkowicie za pomocą plików konfiguracyjnych i / lub poleceń powłoki.
Raphael,
Ten przewodnik jest na tyle ogólny, że można go śledzić w systemie Ubuntu CLI. wiki.archlinux.org/index.php/PulseAudio/…
goetzc
11

Twoja najlepsza opcja nazywa się Music Player Daemon (mpd).

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

Jest to aplikacja serwera klienta. Przechowujesz swoją muzykę na serwerze, a następnie łączysz się z klientami (wiele osób może to zrobić jednocześnie) i kontrolujesz serwer.

Jest już w Ubuntu, wystarczy apt-get install mpd

A także dobra dokumentacja: https://wiki.archlinux.org/index.php/Mpd

MPD może przesyłać strumieniowo muzykę, dzięki czemu możesz mieć wielu klientów (lub głośniki, jeśli chcesz do nich zadzwonić), aby odtwarzać muzykę.

Ale tak naprawdę nie oczekuj dobrej jakości. Strumienie przesyłane strumieniowo źle brzmią (bez względu na to, czy korzystasz z mpd czy pulseaudio). O wiele lepszym pomysłem jest podłączenie prawdziwych głośników do serwera i używanie laptopów tylko do sterowania nim.

loxs
źródło
2
Cóż, mój dom jest za duży, by używać przewodów, dlatego chcę przesyłać dźwięk.
Alvar
Możesz przesyłać strumieniowo, nie martw się o jakość, nie będzie to miało większego znaczenia, Biorąc pod uwagę, że twoje połączenie bezprzewodowe jest wystarczająco silne
Rahul Prasad
W jaki sposób streaming wpływa na jakość dźwięku? WiFi jest cyfrowym medium transferowym. Czy MPD wykonuje bezstratną kompresję? Nie sądzę, że jest to potrzebne w dzisiejszych sieciach WiFi.
nvd
Wow, taka stara odpowiedź. Już nawet nie pamiętam, ponieważ od tego czasu nie korzystałem z MPD.
loxs
11

Nie musiałem robić nic niezwykłego. Mam bliźniacze netbooki, zarówno z PulseAudio, jak i dość nie nazwane przez Intel. Jak to skonfigurowałem, poszło trochę tak.

uruchom paprefs na serwerze i kliencie. Na serwerze upewnij się, że masz włączone ustawienia multiemisji, a bity serwera sprawdzone. lubię to wprowadź opis zdjęcia tutaj

i bit multiemisji wprowadź opis zdjęcia tutaj

Na kliencie włącz bit o znajdowaniu urządzeń z obsługą sieci wprowadź opis zdjęcia tutaj i ustaw urządzenie wyjściowe na wirtualne urządzenie sieciowe za pomocą pavucontrol wprowadź opis zdjęcia tutaj

altówka, powinieneś mieć trochę magii

lazyPower
źródło
1
Tyle że nie ma to nic wspólnego z RTP.
kirelagin
Dzięki za ten wspaniały samouczek. Zaznaczam wszystkie pola, poza tym, że nie mogę „ustawić urządzenia wyjściowego na wirtualne urządzenie sieciowe za pomocą pavucontrol”. Jak rozumiem, odbywa się to za pomocą fragmentu, w którym na twoim zrzucie ekranu jest napisane „Wewnętrzne analogowe stereo audio na charmes @ nano”. Ale w moim systemie w ogóle nie ma takiego przycisku. Co ja robię źle?
user69748
Nie sprawdzałem tych instrukcji od 2011 roku, więc jest całkiem prawdopodobne, że ustawienia demona pulsującego dźwięku uległy zmianie.
lazyPower
To, co teraz mam (po ponownym uruchomieniu), to osobny kanał o nazwie „pulseaudio”, który wydaje się być kierowany do mojego klienta. Jednak nie przepływa przez nią dźwięk. Mój kanał Rhythmbox wciąż nie ma wzmianki o „użytkownik @ klient”.
user69748
1

Dzięki temu rozwiązaniu możesz przesyłać strumieniowo dźwięk z systemu, gdziekolwiek chcesz.
Kluczem tutaj są możliwości sprzężenia zwrotnego ALSA. więc najpierw musisz włączyć urządzenie loopback w ALSA, które pojawi się w PulseAudio Volume Control jako urządzenie wejściowe (a także urządzenie wyjściowe).

sudo modprobe snd_aloop

to urządzenie można następnie dodać do serwera MPD:

mpc add alsa://hw:1,1

gdzie hw: 1,1 to urządzenie wejściowe sprzężenia zwrotnego można wyświetlić za pomocą polecenia aplay -l

następnie musisz skonfigurować wtyczkę wyjściową http dla MPD. wyglądałby następujący przykład/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
 }  

to jest to. Wybierz urządzenie Looback dla źródła audio na karcie Odtwarzanie z regulacją głośności.
Na koniec możesz użyć VLC lub dowolnego mechanizmu renderującego strumień w punkcie docelowym, używając adresu URL httpd: http://192.168.1.38:8000
Ta odpowiedź jest również dostępna tutaj

rev laplasz
źródło
0

Nie jestem pewien, czy coś takiego można osiągnąć za pomocą DLNA / UPnP, ponieważ sam nie znam tego, ale zamieszczam tutaj kilka linków, na wypadek gdyby to pomogło:

Chociaż szybki wynik wyszukiwania sugeruje, że synchronizacja nie jest możliwa ...

Ilari Kajaste
źródło
2
DLNA nie jest zalecane, ponieważ nie może zsynchronizować odtwarzania.
Sparhawk
0

Nie ma jeszcze dobrego rozwiązania (jeszcze). Istnieje AVB, ale jego obsługa 802.11 ogranicza się do synchronizacji czasu.

themihai
źródło
-2

Jeśli chcesz przesyłać strumieniowo na telefon z Androidem, możesz użyć Foobar2000 na serwerze i BubbleUPnP (oprogramowanie płatne) na kliencie.

  1. zdobyć wino
  2. otrzymać foobar_v1.2.5.exe
  3. $ wine foobar2000_v1.2.5.exe
  4. następny, następny, następny ... :)
  5. zdobądź foo_upnp
  6. rozpakuj w folderze komponentów foobar2000 (który prawdopodobnie jest w ~/.wine/drive_c/Program Files/)
  7. uruchom foobar2000
  8. przejdź do Biblioteka → Konfiguruj → Odtwarzanie → Wyjście → Urządzenie i wybierz „Wyjście zerowe”
  9. upewnij się, że ufwnie blokuje odpowiedniego ruchu
  10. w BubbleUPnP:
    1. przejdź do Urządzenia → Biblioteki i wybierz serwer foobar2000
    2. w „Bibliotece” wybierz „Playback Stream Capture”

Zaletą tego podejścia jest to, że jeśli zatrzymasz się na Androidzie, zgromadzi bufor (ponieważ serwer nadal wysyła).

Testowane na Ubuntu (wersja Wine 1.5.28-0ubuntu1~ppa1) i Windows.

Janus Troelsen
źródło