Temat: [HOWTO] Bezprzewodowe głośniki dla Windows lub Linux na OpenWRT
Bezprzewodowe głośniki dla Windows/Linux na OpenWRT, czyli streaming audio w czasie (prawie) rzeczywistym.
Do routera podłączamy kartę muzyczną na USB, z obsługą większości tanich kart nie powinno być problemów.
Instalujemy obsługę USB:
# opkg install kmod-usb-core kmod-usb2
Instaujemy moduły:
# opkg install kmod-sound-core kmod-usb-audio
Instalujemy odtwarzacz madplay:
# opkg install madplay
Instalujemy socat
# opkg install socat
Uruchamiamy nasłuchiwanie strumieni na porcie 5000, oczywiście możemy wybrać dowolny inny:
# socat udp-listen:5000,fork - | madplay - -Q
Polecenie to możemy dodać do pliku /etc/rc.local wtedy nasłuchiwanie uruchomi się automatycznie po starcie routera.
W zależności od posiadanego systemu instalujemy odpowiedni program, który będzie nam wysyłał strumień audio do routera.
Dla Windowsa polecam darmowy Vacard dostępny do pobrania tutaj (linki dzięki benditos):
Vacard 2b1 - LINK(filecloud.me)
Vacard 2b1 - LINK(mirror 1 - ge.tt)
Vacard 2b1 - LINK(mirror 2 - zippyshare.com)
Vacard 2b1 - LINK(mirror 3 - mega.nz)
Można również użyć windowsowej wersji socat, ale to mniej eleganckie rozwiązanie.
Instalujemy Vacard. Nie da się co prawda odznaczyć opcji "Virtual audio card driver", ale w większości przypadków sterowniki i tak się nie instalują. Nawet jeśli, to utworzy się tylko wirtualna karta muzyczna, co czasami też ma swoje plusy. Później w konfiguracji programu tak czy inaczej wybieramy naszą domyślną kartę dźwiękową.
Pamiętamy aby zaznaczony był "Vacard Streamer"
Po instalacji uruchamiamy dostępne narzędzie "MP3 Streamer", to ono będzie przechwytywało dźwięki z systemu i strumieniowało je do routera.
Klikamy przycisk Add i w nowym oknie ustawiamy następujące parametry:
Streamer name: nadajemy nazwę strumieniowi, np router
Mode: ustawiamy na "Stream transmitter",
Resource URL: udp://adres_ip_routera:port, np.: udp://192.168.1.1:5000
Recording device: ustawiamy najlepiej na "Przechwytywanie odtwarzania" lub "Mapowanie dźwięku Microsoft"
Encoding: MP3
Sampling rate: 44100
Bitrate: 128 lub 256
Klikamy Ok i w oknie głównym programu zaznaczamy "ptaszkiem" nowo utworzony strumień i uruchamiamy go przyciskiem Start.
W opcjach programu warto ustawić automatyczne uruchomienie programu po starcie systemu, automatyczne uruchomienie zaznaczonych strumieni po starcie programu oraz odznaczyć pokazywanie okna programu po starcie.
To w zasadzie byłoby na tyle, z powyższymi ustawieniami program jest w zasadzie bezobsługowy.
Od tej chwili, jeżeli wszystko ustawiliśmy jak trzeba (adres IP routera i port), powinniśmy cieszyć się dźwiękami systemu odtwarzanymi przez głośniki podłączone do karty muzycznej routera.
Dla Linuxa wystarczy odpowiednio skonfigurowany serwer PulseAudio, który powinien być dostępny w większości dystrybucji. Można też wykorzystać socat, wedle upodobania. Dokładny opis konfiguracji dla Linuxa podam w następnej części opisu.
Zaproponowane przeze mnie rozwiązanie to ma kilka wad:
W danej chwili może być przesyłany tylko jeden strumień, chyba że uruchomimy kilka instancji socat na różnych portach, dla każdego urządzenia osobno, ale to bardzo zasobożerne rozwiązanie.
Nawet podczas ciszy strumień też jest przesyłany co generuje niepotrzebny ruch w sieci.
Proces kodowania strumienia, przesyłania i dekodowania zajmuje trochę czasu, więc pojawia się lekkie opóźnienie słyszanego dźwięku, ale jest na tyle małe, że w zasadzie nie przeszkadza np. podczas oglądania filmów.
Gdyby pojawiło się bardzo duże opóźnienie często pomaga zatrzymanie wysyłania strumienia w programie "MP3 Streamer" i jego wznowienie.