Przekazywanie dźwięku jak X w SSH

27

Chociaż możliwe jest zdalne korzystanie z aplikacji X za pomocą przełącznika -X w ssh, dźwięk jest odtwarzany tylko w głośniku zdalnego urządzenia. Na przykład, jeśli oglądam film w VLC / Totem, widoczne jest tylko wideo i nie słyszę dźwięku. Czy jest też sposób na przekazanie dźwięku? [bez przeszukiwania konfiguracji Pulse-audio, to znaczy; Podobnie jak ssh sam rozumie przekazywanie X.]

Próbowałem tego tylko w Ubuntu (w różnych wersjach Ubuntu od 9.10 do 10.10), jeśli to pomaga.

Akilan
źródło

Odpowiedzi:

30

Najpierw uruchom paprefs, przejdź do serwera sieciowego i zaznacz opcję Włącz dostęp sieciowy do lokalnych urządzeń dźwiękowych . Spowoduje to załadowanie „modułu-natywny-protokół-tcp” w PulseAudio.

Możesz teraz uzyskać dostęp do serwera PulseAudio na kilka sposobów:

Ręcznie przekaż połączenie TCP przez SSH

  1. Służy pax11publishdo wykrywania portu nasłuchiwania PulseAudio (zwykle 4713);
  2. Połącz się z innym komputerem za pomocą ssh -R 24713:localhost:4713(zdalny port „24713” został wybrany arbitralnie);
  3. Skopiuj cookie uwierzytelniające (~ / .config / pulse / cookie) na ten komputer;
  4. Na koniec uruchom export PULSE_SERVER="tcp:localhost:24713"i przetestuj za pomocą pactl info.

Użyj automatycznego bezpośredniego połączenia z wykrywaniem opartym na X11

Ilekroć korzystasz z SSH z włączonym przekazywaniem X11, programy PulseAudio używają X11 do odkrycia twojego serwera dźwięku (użyj pax11publishlub xprop -root PULSE_SERVERprzekonaj się sam). Spróbują ustanowić bezpośrednie połączenie (nie SSH, niezaszyfrowane) z komputerem w celu strumieniowego przesyłania dźwięku.

Użyj automatycznego bezpośredniego połączenia z wykrywaniem DNS-SD

Jeśli masz zainstalowanego demona avahi i pulseaudio-zeroconf, możesz aktywować „Pozwól innym komputerom na wykrywanie lokalnych urządzeń”. Spowoduje to załadowanie „modułu-zeroconf-opublikowania”.

Inne komputery, z włączoną opcją „Udostępnij lokalnie wykrywalne urządzenia sieciowe” (moduł-zeroconf-Discover), automatycznie wyświetlą listę wyników (odbiorników) eksportowanych przez komputer. Będą używać bezpośredniego (niezaszyfrowanego) połączenia do strumieniowego przesyłania dźwięku.

Ta metoda wymaga także, aby ~ / .config / pulse / cookie były identyczne na różnych hostach.

grawitacja
źródło
2
Gdzie ~/.pulse_cookieistnieje Na zdalnym czy lokalnym?
HSchmale,
2
Obie. Jest generowany przez demona pulseaudio, a następnie odczytywany przez łączenie klientów (jak hasło), więc będziesz chciał skopiować go z serwera do klientów. (Zwróć uwagę, że ścieżka została zmieniona na ~/.config/pulse/cookie; jeśli jedna nie działa, spróbuj drugiej.)
grawity
2
Zauważ, że po zmianie ustawień w paprefs, musisz ręcznie zrestartować przynajmniej pulseaudio. W moim przypadku, po spędzeniu godzin na próbach ustalenia, co było nie tak, po prostu uruchomiłem ponownie, a potem wszystko działało :).
crazy2be
To zadziałało dla mnie, dzięki. Używanie zdalnego raspberry pi z rtl-sdr, dlatego chcemy uzyskać dźwięk przez ssh.
Paul M