Пересылка аудио как X в SSH

27

Хотя можно использовать приложения X удаленно, используя ключ -X в ssh, звук воспроизводится только через динамик удаленного устройства. Например, если я смотрю фильм в VLC / Totem, видно только видео, и я не слышу звук. Есть ли способ переслать аудио тоже? [без копания в настройках Pulse-audio, я имею в виду; Как то, как ssh понимает пересылку X самостоятельно.]

Я пробовал это только в Ubuntu (в различных версиях Ubuntu с 9.10 по 10.10), если это помогает.

Акилан
источник

Ответы:

30

Сначала запустите paprefs, перейдите на Сетевой сервер и установите флажок Включить сетевой доступ к локальным звуковым устройствам . Это загрузит «module-native-protocol-tcp» в PulseAudio.

Теперь вы можете получить доступ к серверу PulseAudio несколькими способами:

Переадресация TCP-соединения через SSH вручную

  1. Используйте pax11publishдля обнаружения порта прослушивателя PulseAudio (обычно 4713);
  2. Подключитесь к другому компьютеру с помощью ssh -R 24713:localhost:4713(удаленный порт «24713» был выбран произвольно);
  3. Скопируйте ваш файл аутентификации (~ / .config / pulse / cookie) на этот компьютер;
  4. Наконец запустить export PULSE_SERVER="tcp:localhost:24713"и проверить с pactl info.

Использовать автоматическое прямое соединение с обнаружением на основе X11

Всякий раз, когда вы используете SSH с включенной переадресацией X11, программы PulseAudio используют X11 для обнаружения вашего звукового сервера (используйте pax11publishили, xprop -root PULSE_SERVERчтобы убедиться в этом сами). Они попытаются установить прямое (не SSH, незашифрованное) соединение с вашим компьютером для потоковой передачи звука.

Использовать автоматическое прямое соединение с обнаружением DNS-SD

Если у вас установлены avahi-daemon и pulseaudio-zeroconf, вы можете активировать «Разрешить другим машинам обнаруживать локальные устройства». Это загрузит "module-zeroconf-publish".

Другие компьютеры, у которых включена опция «Сделать обнаруживаемые сетевые устройства доступными локально» (module-zeroconf-Discover), автоматически выводят список выводов (приемников), которые экспортирует ваш компьютер. Они будут использовать прямое (незашифрованное) соединение для потоковой передачи аудио.

Этот метод также требует, чтобы ~ / .config / pulse / cookie были одинаковыми для всех хостов.

grawity
источник
2
Где ~/.pulse_cookieсуществует? На удаленном или локально?
HSchmale
2
И то и другое. Он генерируется демоном pulseaudio, а затем читается путем подключения клиентов (например, пароля), поэтому вам нужно скопировать его с сервера на клиенты. (Обратите внимание, что с тех пор путь был изменен на ~/.config/pulse/cookie; если один не работает, попробуйте другой.)
grawity
2
Обратите внимание, что после изменения настроек в paprefs, вы должны вручную перезапустить хотя бы pulseaudio. В моем случае, потратив часы, пытаясь выяснить, в чем дело, я просто перезагрузился, и тогда все заработало :).
crazy2be
Это сработало для меня, спасибо. Использование удаленного Raspberry Pi с rtl-sdr, следовательно, хочет получить звук через SSH работает.
Павел М