Używanie Pi do strumieniowego przesyłania całego wyjścia audio z mojego komputera do mojego stereo

37

Mój problem jest dość prosty, ale nie byłem w stanie znaleźć satysfakcjonującego rozwiązania.

Zasadniczo chcę, aby mój Raspberry Pi był podłączony do mojego stereo, a następnie odtwarzał dowolne wyjście audio z mojego komputera przez Wi-Fi do PI.

Czy jest jakiś sposób, aby to zrobić łatwo, bez konieczności używania specjalnych graczy? To znaczy, czy komputer PC rozpoznaje Pi jako „głośniki”?

Chciałbym usłyszeć każdy dźwięk na moim komputerze w stereo, tj. Gry, muzyka, dźwięki systemowe, powiadomienia, filmy z YouTube itp.

Dziękuję bardzo!

Jerome
źródło

Odpowiedzi:

24

Jeśli używasz Linuksa na komputerze, jest to całkowicie wykonalne, pod warunkiem, że zainstalujesz i odpowiednio skonfigurujesz PulseAudio zarówno na swoim Raspberry Pi, jak i na komputerze z systemem Linux.

Jeśli na komputerze jest zainstalowany system Windows ... Przejdź do końca postu (który właśnie zaktualizowałem).

Inną opcją byłoby użycie PulseAudio jako odbiornika / klienta AirPlay, ale o ile wiem, nie jest to możliwe.

Ale jeśli używasz Linuksa, czytaj dalej:

Uwaga 1: PulseAudio przez WiFi będzie działał bezbłędnie na niektórych routerach, ale na innych nie.

Uwaga 2: Poniższe instrukcje pochodzą z rozmowy kilku użytkowników Raspberry Pi (w tym mnie) na ten temat .

1) Zainstaluj PulseAudio na swoim Raspberry Pi

sudo apt-get install pulseaudio pulseaudio-module-zeroconf avahi-daemon

2) Upewnij się, że PulseAudio uruchomi się automatycznie:

sudo nano /etc/default/pulseaudio

Poszukaj wpisu PULSEAUDIO_SYSTEM_START i zmień go na 1 , aby wyglądał jak PULSEAUDIO_SYSTEM_START = 1

3) Skonfiguruj PulseAudio do pracy w sieci:

sudo nano /etc/pulse/system.pa

Dodaj następujące wiersze:

moduł obciążenia moduł-natywny-protokół-tcp auth-ip-acl = 127.0.0.1; 192.168.1.0/24

moduł ładowania moduł zeroconf-opublikuj

4) Uruchom ponownie Raspberry Pi:

sudo reboot

5) Teraz na komputerze z systemem Linux zainstaluj paprefs . Jeśli twoja dystrybucja Linuksa oparta jest na Debianie (takim jak Ubuntu, Mint itp.), Możesz użyć tego polecenia:

sudo apt-get install paprefs

6) Uruchom paprefs i pod Network Access umożliwić Bądź urządzenia dźwiękowe wykrywalne sieci PulseAudio dostępne lokalnie

7) W obszarze Network Server włącz opcję Włącz dostęp sieciowy do lokalnych urządzeń dźwiękowych i zaznacz obie opcje (prawdopodobnie nie jest to konieczne, chyba że chcesz również używać swojego Linux-a jako serwera / zlewu)

8) W obszarze Multicas / RTP włącz obie opcje

9) Sprawdź dostępne urządzenia wyjściowe (użyj aplikacji Linux Audio / Mixer). Twoje Raspberry Pi będzie (powinno) pojawiać się na liście; wybierz go, a wszystko, co gra na twoim Linux-ie, zostanie przekierowane do Raspberry Pi.

Jeśli Twój Raspberry Pi jest nadal niedostępny, spróbuj ponownie uruchomić komputer z systemem Linux.


AKTUALIZACJA: Wysyłanie całego dźwięku z systemu Windows do Raspberry Pi

Nadal będziesz musiał postępować zgodnie z poprzednimi instrukcjami, aby zainstalować i skonfigurować PulseAudio na swoim Raspberry Pi.

Oto, co musisz zrobić dla systemu Windows:

1) Pobierz najnowszą wersję LineInCode

2) Rozpakuj pobrany plik

2) Pobierz PuTTY's Plink i umieść plik plink.exe w tym samym folderze, w którym wyodrębniono LineInCode

3) Otwórz Notatnik i wklej następujący kod:

linco.exe -B 16 -C 2 -R 44100 | plink 192.168.1.104 -l pi -pw raspberry "cat - | pacat --server 127.0.0.1 --playback"

Oczywiście zmień adres IP ( 192.168.1.104 ), nazwę użytkownika ( pi ) i hasło ( malina ), aby dopasować je do konfiguracji.

4) Zapisz plik jako audio2rpi.bat w tym samym folderze, w którym wyodrębniono LineInCode

Teraz, gdy chcesz przesyłać strumieniowo dźwięk z komputera z systemem Windows do Raspberry Pi, wystarczy dwukrotnie kliknąć plik audio2rpi.bat.


Uznanie za te instrukcje: http://ubuntuforums.org/showthread.php?t=1121603

xfx
źródło
Dzięki- dam temu szansę! czy mogę również używać pulseaudio do strumieniowania ze smartfona? Dzięki
Jerome,
@Jerome To powinno być kolejne pytanie, które zadajesz na tej stronie.
syb0rg
Jakiego systemu operacyjnego używasz na swoim Pi? Korzystam z nowej instalacji Raspbmc i wydaje się, że wykonanie tych instrukcji spowodowało uszkodzenie urządzenia. Dobrze, że
zmiana formatu
Próbowałem tych instrukcji w kilku wydaniach Raspbian.
xfx
Interesuje nas, jaki adres IP wprowadzamy w domyślnym ładowaniu modułu config tcp. Doświadczam nieco błędnego odtwarzania przez sieć bezprzewodową, ale bezbłędnie po podłączeniu przewodowym, co jest interesujące, ponieważ nethogsużyto tylko raportów 13 KB / s.
M1ke,
4

Napisałem mały wpis na blogu o tym, jak dostałem tę pracę z PulseAudio na PC i Raspbmc na Raspberry Pi - przy użyciu strumieniowania DLNA / UPnP. Jest tutaj: http://westmarch.sjsoft.com/2014/04/streaming-audio-linux-to-raspbmc/ . Mam nadzieję, że to pomaga. Podczas buforowania XBMC występuje niewielkie opóźnienie - więc prawdopodobnie nie będzie to idealne do grania ani niczego, ale działa dobrze w przypadku muzyki.

Jest to dość długi zestaw instrukcji - stąd link tutaj, ale oto podsumowanie opcji, która działała dla mnie przy użyciu DLNA / UPnP:

  • apt-get install rygel
  • Otwórz Preferencje PulseAudio i w obszarze Serwer sieciowy zaznacz Udostępnij lokalne urządzenia dźwiękowe jako Serwer multimediów DLNA / UPnP i Utwórz osobne urządzenie audio do przesyłania strumieniowego DLNA / UPnP
  • Edytuj konfigurację Rygla w /etc/rygel.conflub $HOME/.config/rygel.confi skonfiguruj ją do publikowania za pomocą GstLaunch(patrz konfiguracja poniżej)
  • Przejdź do Menedżera plików XBMC, wyszukaj nowe źródło, wybierz Urządzenia UPnP i powinieneś zobaczyć Gst Launch jako opcję
  • Powinieneś być w stanie powiedzieć XBMC, aby odtwarzało dźwięk z tego strumienia

Oto konfiguracja dla Rygel do używania GstLaunch:

[GstLaunch]
enabled=true
launch-items=mypulseaudiosink
mypulseaudiosink-title=Audio on @HOSTNAME@
mypulseaudiosink-mime=audio/flac
mypulseaudiosink-launch=pulsesrc device=upnp.monitor ! flacenc
Matt Hampton
źródło
Czy możesz dołączyć uproszczony zestaw instrukcji z posta na blogu, na wypadek gdyby coś się z nim wydarzyło w przyszłości?
Fred
4

Chciałem to zrobić sam z Windows7 -> RaspberryPi (OpenElec) i potknąłem się o twoje pytanie. Po kilku badaniach wciąż nie znalazłem satysfakcjonującego rozwiązania dla OpenElec, ale miałem wystarczająco dużo informacji, aby wymyślić takie, które jest bardzo proste i naprawdę działa z wysoką jakością i tylko około ~ 1 sekundy opóźnienia!

Potrzebujesz:

  1. VLC Media Player (użyłem Rincewind v2.1.3 na moim Win7 x64)
  2. Karta dźwiękowa zapewniająca urządzenie nagrywające „Stereo Mix” (miałem szczęście, że miałem jedno urządzenie na pokładzie)
  3. Raspberry Pi (używam OpenElec 4.0.5, chociaż ogólnie powinien działać na XBMC)

Uwaga: jeśli nie masz karty dźwiękowej, która to obsługuje, możesz spróbować użyć VAC ( http://www.virtualaudiocable.net/ ), chociaż mówię ci, że to nie działało poprawnie dla mnie, słaba jakość dźwięku i bufor problemy przez całą drogę ... ale może to tylko ja.

Krok 1)

Utwórz plik wsadowy, który uruchamia usługę przesyłania strumieniowego VLC http w tle i przechwytuje dźwięk z urządzenia nagrywającego „Stereo Mix”:

@echo off

set vlc="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
start "" %vlc% --qt-start-minimized dshow:// :dshow-vdev=none :dshow-adev="Stereo Mix (Realtek High Defini" :live-caching=10 :sout=#transcode{vcodec=none,acodec=vorb,ab=500,channels=2,samplerate=44100}:http{dst=:8080/audiostream.ogg} :sout-keep

Uwagi:

  1. Być może będziesz musiał zmienić urządzenie nagrywające, jeśli twoje ma inną nazwę, użyłem Audacity ( http://audacity.sourceforge.net/ ), aby sprawdzić nazwy moich urządzeń przechwytujących, ponieważ już je zainstalowałem
  2. Tak, bitrate audio jest bardzo wysoki (maksymalny dla Vorbis), ale im wyższy bitrate, tym szybciej bufor jest zapełniany, a zatem im krótsze opóźnienie :-) (nie można zmienić dokładności rozmiaru bufora dla muzyki na XBMC, używam 5 MB bufor na mój w ogóle)
  3. Próbowałem FLAC, MP3, a nawet WAV i poza tym, że tylko MP3 i Vorbis działały w ogóle z moim Pi, miałem najszybszy czas ładowania Pi (zasadniczo natychmiast) i najmniejsze opóźnienie z Vorbis

Krok 2)

Nawigować do

\\ rapsberrypi \ Userdata \ playlists \ music

i stwórz tam plik .strm o wybranej przez ciebie nazwie (nazwałem moją VLC.strm), który zawiera zwykły link do twojego strumienia VLC: (zmień IP na IP twojego komputera: p)

http://192.168.0.1:8080/audiostream.ogg

Krok 3)

Możesz teraz ustawić urządzenie audio przechwycone przez „Stereo Mix” na domyślne w ustawieniach dźwięku systemu Windows lub otworzyć odtwarzacz taki jak VLC i ręcznie użyć innego niż domyślne urządzenia do odtwarzania muzyki na RaspberryPi:

Otwórz VLC (oprócz zminimalizowanego w zasobniku, który przesyła strumieniowo „Stereo Mix”) i wykonaj następujące czynności:

  1. Narzędzia -> Preferencje
  2. Audio
  3. Moduł wyjściowy: „Wyjście audio WaveOut”
  4. Urządzenie: - Twoje (analogowe) urządzenie przechwycone przez urządzenie nagrywające „Stereo Mix” -
  5. Zapisać
  6. Uruchom ponownie VLC
  7. Graj muzykę

Krok 4)

Na twoim RaspberryPi:

  1. W XBMC przejdź do Muzyka -> Listy odtwarzania
  2. Wybierz VLC.strm (lub jakkolwiek to nazwałeś)
  3. CIESZ SIĘ MUZYKĄ!

Rozwiązywanie problemów

Jeśli masz problemy z uruchomieniem lub przechwyceniem „Stereo Mix”, najpierw pobaw się w systemie Windows, np. Nagrywając go za pomocą Audacity i wypróbowując kilka sugestii na forum:

ten:

http://www.howtogeek.com/howto/39532/how-to-enable-stereo-mix-in-windows-7-to-record-audio/

albo ten:

http://www.sevenforums.com/sound-audio/104497-stereo-mix-enabled-but-no-sound.html

W porządku, wystarczy pisać na dzisiaj, mam nadzieję, że to komuś było pomocne!

BR, Deads

Martwy człowiek
źródło
3

Opisane tutaj rozwiązanie „LineInCode” działa - ale dźwięk jest okropny przez Wi-Fi. Powyższe rozwiązanie VLC również działa - ale wymaga dużo kliknięcia. Połączyłem oba w pliku wsadowym, który uruchamiałby VLC jako streamer na moim komputerze, a mpg123 jako „lister” na PI. Dla mnie to działa jak urok. Trzeba mieć plik w tym samym folderze (używamy go jako ssh-klient). Używam tego skryptu od dzisiaj do słuchania mp3 na moim laptopie, a wyjściem dźwiękowym jest pi:

            REM This is fischteich's start_sound.bat v 0.3
            @echo off

            set vlc="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
            set ssh-login=YOURLOGIN
            set ssh-pw=YOURPW
            set this-machine-ip=192.168.XXX.XXX
            set pi-ip=192.168.XXX.XXX
            set use-port=5001

            set start-string= --sout-keep --sout=#transcode{vcodec=none,acodec=mp3,ab=192,channels=2,samplerate=44100}:http{mux=mp3,dst=:%use-port%/}

            REM Start VLC ready for files to play
            @start "vlc" %vlc% %start-string%
            REM Start playback via mpg123 on the Pi!
            plink %pi-ip% -l %ssh-login% -pw %ssh-pw% "mpg123 http://%this-machine-ip%:%use-port%"
leosok
źródło
1

Jednym ze sposobów osiągnięcia tego byłoby zainstalowanie Volumio OS na Raspberry PI ( https://volumio.org ), postępując zgodnie z podanymi tam instrukcjami. Ta dystrybucja obejmuje odbiornik ShairPort, który pozwala urządzeniom Apple na przesyłanie strumieniowe audio. Alternatywnie myślę, że możesz po prostu zainstalować Shairport w wybranej dystrybucji.

Na swoim komputerze z systemem Windows zainstaluj tuneblade ( http://tuneblade.com ), której darmowa wersja umożliwia przesyłanie audio z komputera do ShairPort na twoim Raspberry Pi. Działa również dobrze z VLC, aby wyeliminować opóźnienie audio podczas oglądania filmów itp.

To działa dla mnie - mam nadzieję, że to też dla ciebie zadziała.

rdt25
źródło
Witamy w Raspberry Pi Stack Exchange! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
RPiAwesomeness
Tuneblade współpracuje również z Pi MusicBox
wejście
0

O ile wiem, nie ma jeszcze rozwiązania. Istnieje standard / technologia o nazwie AVB, ale jego obsługa planowana dla 802.11 jest ograniczona do synchronizacji czasu.

themihai
źródło
-1

Czy próbowałeś prostego przesyłania strumieniowego dźwięku Bluetooth za pomocą adaptera A2DP podłączonego do zestawu stereo? Korzystanie z Raspberry Pi do zrobienia tego wydaje się przesadą, choć przyznam się do zbudowania urządzenia do strumieniowego przesyłania dźwięku Bluetooth A2DP z Raspberry Pi i tanim adapterem Bluetooth USB.

G Ragib
źródło
To wspaniale, że zbudowałeś Raspi, które mogą przesyłać strumieniowo A2DP, ale twoja odpowiedź nie pomaga mi na to samo, więc ta odpowiedź nie jest odpowiedzią.
Mark Booth
Nie potrzeba. Sparuj komputer z odbiornikiem Bluetooth i wyślij sygnał dźwiękowy bezpośrednio z komputera do sterolu. Odbiornik Bluetooth powinien wyświetlać się jako wyjście dźwięku na komputerze.
Christopher Biggs,