Zsynchronizowane wyjście audio na wielu komputerach? VLC? rozwiązania sprzętowe?

7

Zastanawiam się, czy istnieje jakieś oprogramowanie lub sprzęt do zsynchronizowanego audio lub audio i wideo na wielu komputerach lub urządzeniach w sieci.

Widziałem Sonos i może to być dobre rozwiązanie, ale jest to również bardzo drogie rozwiązanie.

Chciałbym móc odtwarzać coś z wyjściem audio w czasie rzeczywistym na jednym komputerze, ale słyszeć to na głośnikach w całym domu, będąc odbiornikiem kina domowego lub innym komputerem w innym pokoju.

Widziałem rozwiązanie wykorzystujące Appleport iport express, ale opóźnienie było nie do przyjęcia dla niczego innego niż tylko muzyka. Chciałbym uniknąć prowadzenia przewodów audio z balunami do szeregu wzmacniaczy rozrzuconych po całym miejscu, gdy wszędzie mam kat5.

Czy ktoś jest zaznajomiony z zastosowaniem tego rodzaju procesu do odtwarzania całego domowego dźwięku? Opóźnienie jest dla mnie bardzo ważne, jeśli mam dołączone wideo do dźwięku (np. Oglądając mecz hokeja)

AKTUALIZACJA

Od tamtej pory zainstalowałem w domu kilka odtwarzaczy typu squeezebox do celów muzycznych i podłączyłem sterowany szeregowo odbiornik Onkyo do mojego systemu automatyki. Daje mi to trochę większą elastyczność, aw większości stref mogę uzyskać dźwięk w czasie rzeczywistym z gry, używając multizonów w odbiorniku, a dla muzyki mogę zsynchronizować resztę stref. Szafy sqeezebox zsynchronizują się ze sobą (myślałem, że występują opóźnienia w przypadku wydarzeń na żywo) W obszarach, w których jest to problem (np. Oglądanie meczu hokeja), dystrybuowałem HDMI za pomocą przełącznika matrycowego na 4 różne telewizory z wyjściem audio do wzmacniacza w tym pokoju. Umożliwiając mi brak opóźnień w różnych pokojach na potrzeby wydarzeń na żywo, które wymagają wideo.

W sumie doceniam odpowiedzi, ale żadna z nich nie działała dla mnie. Myślę, że dystrybucja HDMI jest zdecydowanie jedną z najlepszych dla wideo i audio, a squeezebox jest tańszy niż sonos dla audio (i istnieją odtwarzacze oprogramowania, które można uruchomić na dowolnym komputerze z niewielkimi poprawkami, które można zsynchronizować w celu wiele domowych rozwiązań audio w strefie)

zimmer62
źródło
Naprawdę nie znalazłem dobrego obsługiwanego rozwiązania. Myślę, że w końcu kupię kontrolowaną przez RS232 matrycę audio z wieloma strefami i poprowadzę wiązkę przewodów z punktów, w których potrzebuję wyjścia dźwięku, wejścia dźwięku. To do bani, ale każda opcja oprogramowania była albo nieobsługiwana, dodawała wiele opóźnień, albo synchronizacja nie rozpoczęła się, gdy używanych było wiele stref wyjściowych w tym samym czasie. Chyba po prostu nie rozumiem, dlaczego rozwiązanie nie istnieje za pośrednictwem
protokołu

Odpowiedzi:

1

Jeśli opóźnienie jest niedopuszczalne, najlepszym rozwiązaniem może być przesłanie dźwięku do domu przez radio FM lub głośniki bezprzewodowe (a nawet kable). Jak podłączyć radio internetowe do tunera?

Matthew Lock
źródło
zamierzam poprowadzić kable i zdobyć matrycowy przełącznik audio.
zimmer62,
3

Wypróbuj Airfoil . Tak, najlepiej działa w przypadku muzyki, ale może obsłużyć każde wyjście audio z dowolnej aplikacji. Ma własną aplikację do odtwarzania wideo, która synchronizuje audio / wideo z plikami wideo.

Mam głośniki rozrzucone po domu podłączone do komputera lub ekspresu na lotnisku. Mogę wyprowadzać dźwięk z dowolnego programu na dowolnym komputerze w domu i wybierać, z których głośników wydobywa się dźwięk. Heck, byłem znany z tego, że podłączałem ipod touch do niektórych przenośnych głośników na zewnątrz podczas imprez.

Curtis Tasker
źródło
Wypróbowałem Airfoil, a moją największą skargą było opóźnienie, w przypadku muzyki było to w porządku, ale w mojej aplikacji nie potrzebuję żadnych opóźnień. Większość muzyki nie miałaby znaczenia, ale wyobraź sobie próbę obejrzenia wydarzenia sportowego na żywo, jeśli dźwięk byłby opóźniony nawet o kilkaset milisekund.
zimmer62,
2

Pulseaudio powinien to zrobić, jak sądzę - przynajmniej tak mówią FAQ

Journeyman Geek
źródło
„Pliki binarne systemu Microsoft Windows można pobrać z Cendio. Pamiętaj, że są one przeznaczone dla wersji 0.9.6 z listopada 2007 r. Działają, pod warunkiem, że najwyraźniej używasz tylko jednej karty dźwiękowej”. Wygląda na to, że platforma Windows nie jest zbyt dobrze obsługiwana dla tego oprogramowania. Pamiętam, jak próbowałem tego rok temu i nie powiodło się.
zimmer62
2

Przepraszamy za długość tej odpowiedzi - reprezentuje ona kilka tygodni badań metodą prób i błędów. Obawiam się, że szczegóły mogą mieć znaczenie, więc podałem więcej niż mniej. Koncentruje się na udostępnianiu dźwięku

Podobnie jak inni w tym wątku, byłem zainteresowany synchronizacją dźwięku w całym domu z przestrzeniami, w których środowiska akustyczne pokrywają się. Ponieważ dźwięk przemieszcza się z prędkością około stopy / milisekundy, wymaga to synchronizacji na poziomie około 10s poziomu milisekundy. Znalazłem sposób na to, aby ta praca działała z VLC i pozwalała na synchronizację przez wiele godzin bez wędrowania. Chociaż przyznam, że sprawdziłem kod źródłowy VLC, aby spróbować zrozumieć, które zegary są używane, nie udaję, że rozumiem, co się tam dzieje. Co więcej, wiele z tego, co zrobiłem, było empiryczne. Tak więc, jeśli ludzie, którzy naprawdę rozumieją VLC, oferują wyjaśnienie lepszego sposobu na zrobienie tego, jestem najbardziej otwarty. Z tymi przeszkodami na drodze, oto co zrobiłem, co wydaje się działać.

Konfiguracja

Mam cztery obszary, w których chciałbym dzielić się dźwiękiem i kolekcję komputerów z różnych roczników, które chcę poświęcić, aby zapewnić dźwięk. Niektóre z tych maszyn działają pod Linuksem (Ubuntu 12.04), podczas gdy inne z systemem Windows. Ogólnie rzecz biorąc, łatwiej było zsynchronizować urządzenia z systemem Linux niż urządzenia z systemem Windows, ale było to możliwe.

W systemach Linux konieczna była aktualizacja sterowników pulseaudio przy użyciu ppa: ubuntu-audio-dev / ppa, aby uzyskać wersję o niskim opóźnieniu. W przeciwnym razie konfiguracja była waniliowa. VLC skarżyło się na opóźnienia bez tej aktualizacji. Mam nadzieję, że kiedy otrzymamy 14.04, problem ten zniknie.

W pudełkach Windows używam Windows 7 Pro.

Dźwięk jest dostarczany z VLC Linux-a, który jest niezależny od odtwarzaczy. Jest tuż za firewallem, w którym sieć wchodzi do domu.

Sieć to połączenie gigabitowego przewodowego i bezprzewodowego (802.11g).

Rzeczy, które mogą nie mieć znaczenia

Ponieważ jestem wariatem czasu, wszystkie maszyny są zablokowane razem na poziomie poniżej milisekundy za pomocą NTP. W przypadku Linux-a jest to banalne. W oknie systemu Windows korzystam z implementacji ntp Meinberga (znalezionej pod adresem http://www.meinbergglobal.com/english/sw/ntp.htm ). Pole obsługujące dźwięk jest synchronizowane z normalnymi zewnętrznymi serwerami czasu . Jednak urządzenia odtwarzające synchronizują czas wyłącznie z serwerem audio i ściśle go śledzą. Linia z pliku ntp.config na urządzeniach odtwarzających, która to robi, jest

server 10.17.0.12 iburst burst minpoll 4 maxpoll 4 prefer

To gwarantuje, że kontrole czasu są wykonywane co 16 sekund - oczywiście nie martwię się o ruch w sieci.

serwer

Serwer jest skonfigurowany do monitorowania strumienia PulseAudio, dzięki czemu wszystko, co gram na serwerze, zostanie przekazane do strumienia wyjściowego.

Strumień wyjściowy jest strumieniem rtsp obsługującym dwa kanały przy 44,1 kHz. Znowu zapewne są rzeczy, które mógłbym zrobić, aby zaoszczędzić przepustowość, ale bardziej interesuje mnie poprawna synchronizacja niż minimalizacja przepustowości.

W Preferencjach (w Narzędziach)

  1. W ustawieniach Prostych Audio - upewnij się, że dźwięk rozciągania w czasie jest włączony

    W przypadku pozostałych ustawień kliknij „Wszystkie” u dołu strony Preferencji

  2. Zezwalaj na priorytet w czasie rzeczywistym

  3. Synchronizacja sieci - sprawdź Zegar główny sieci i podaj adres IP serwera głównego (w tym przypadku to urządzenie)
  4. Audio - włącz Wysokiej jakości próbkowanie dźwięku i zaznacz opcję Włącz rozciąganie dźwięku
  5. Input / Codecs - ten wydaje się mieć największe znaczenie - przewiń w dół do dolnej części strony
    1. Ustaw buforowanie sieci na 300ms - być może będziesz musiał to zmienić w zależności od prędkości i rywalizacji twoich maszyn - na moim 300 wystarczy
    2. Średni licznik referencyjny zegara - stwierdziłem, że 1000 działało dobrze - wydaje się to wpływać na szybkość synchronizacji po małych zmianach w czasie
    3. Włącz synchronizację zegara
    4. Jitter zegara - 30 ms działa na moich systemach
    5. Sprawdź synchronizację sieci
    6. Podałem nazwy plików dla katalogu Record i katalogu Timeshift - nie wiem, czy to ma znaczenie
    7. Granulacja przesunięcia w czasie - ustawiłem na 1000, ponownie, nie jestem pewien, czy to ma znaczenie.

Klienci

Skonfiguruj klientów do odtwarzania strumienia dostarczanego przez serwer.

Klienci są skonfigurowani tak, aby pasować do wzorca z kilkoma wyjątkami - tutaj wymienię tylko różnice

Preferencje systemu Windows

  1. Zwiększ priorytet procesu
  2. Ustaw źródło zegara na Czas systemowy (Niebezpieczne!) - Wypróbowałem inne ustawienia i mają tendencję do dryfowania. To wydaje się działać dobrze, dopóki NTP wykonuje swoją pracę. Kiedy wyłączam NTP, rzeczy zaczynają dryfować. Patrząc na kod źródłowy, wydaje się, że ta opcja wykorzystuje GetSystemTimePreciseAsFileTime ()- w nowoczesnych systemach jest to zegar poniżej mikrosekundy i wydaje się być zegarem zarządzanym przez NTP. Jestem pewien, że istnieje powód, dla którego jest oznaczony jako Niebezpieczny, więc używaj go na własne ryzyko - wydaje się, że działa dla mnie.
  3. W synchronizacji sieci - nie sprawdzaj głównego zegara sieciowego (w końcu jest to klient) Podaj adres IP swojego głównego zegara.

W przeciwnym razie wszystko jest takie samo jak na kapitanie.

Linux -

Preferencje

  1. Nie masz wyboru zegara - musisz podać adres IP urządzenia nadrzędnego, tak jak w przypadku systemu Windows.

Ostrzeżenia

Powiedziawszy to wszystko, wszystkie skonfigurowane przeze mnie klienty Linuksa działają dobrze - nawet bardzo zabytkowy netbook o bardzo małej mocy.

Windows to inna historia. Wypróbowałem dwa urządzenia, oba z procesorami i7 - są stosunkowo nowe i szybkie. Po pierwsze, laptop Lenovo, działa z powyższym przepisem. Drugi, Shuttle Box, działał do pewnego stopnia, ale po kilku godzinach zaczął dryfować. W końcu poddałem się i ustawiłem na podwójne uruchamianie z Ubuntu. Gdy to zrobiłem, wszystko po prostu działało. Chociaż jestem przekonany, że Windows można uruchomić, ponieważ mam dowód na istnienie, Linux wydaje się być bliżej niezawodnego rozwiązania. Mam teraz trzy urządzenia klienckie z systemem Linux i wszystkie one działają bezbłędnie i synchronizują się w wielogodzinnych skalach czasowych bez konieczności ponownego uruchamiania klienta VLC.

Charles McMillan
źródło
Witamy w Super User . Nie przepraszaj za długość! Długie odpowiedzi są lepsze. Staraj się unikać słowa „wątek” tutaj, ponieważ nie jest to forum dyskusyjne, to tylko pytanie i odpowiedź.
Kevin Panko
1

W tym celu powinno być możliwe użycie VLC.

Zobacz np. Poradnik : Przesyłaj strumieniowo prawie wszystko za pomocą VLC :

„... pokażemy, jak przesyłać strumieniowo dowolny typ pliku multimedialnego z komputera na inne urządzenie w sieci ... Za pomocą tych technik można przesyłać strumieniowo wideo z komputera biurowego na laptopa podłączonego do telewizora w salonie i kontroluj listę odtwarzania za pomocą urządzenia PDA ”.

Peter Mortensen
źródło
W tym artykule nie widziałem nic na temat synchronizacji odtwarzania na wielu komputerach. Chyba mogę go zainstalować i grać z oprogramowaniem, aby sprawdzić, czy odkryję jakieś opcje, które utrzymają synchronizację obu urządzeń.
zimmer62,