У меня есть удаленная машина, к которой я могу подключиться по ssh. На удаленной машине есть программа, которая использует Pulse Audio для получения входных данных с USB-микрофона, подключенного к удаленной машине. Эта настройка отлично работает при локальном использовании, т. е. я могу получать входные данные с Pulse Audio при локальном подключении.
По ssh получаю ошибку:
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
Аналогично, когда я пытаюсь открыть pavucontrol
на удаленной машине через ssh -X
, я получаю сообщение:
Не удалось подключиться к PulseAudio. ... В данном случае это, скорее всего, связано с неправильной настройкой PULSE_SERVER в свойствах корневого окна Environment/X11 или default-server в client.conf.
pulseaudio --start
N: [pulseaudio] main.c: User-configured server at {30ab51874e4a0ca492830f1400000007}unix:/home/user2/.pulse/30ab51874e4a0ca492830f1400000007-runtime/native, refusing to start/autospawn.
Попытка запустить импульсный звук с помощью x11:start-pulseaudio-x11
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
pulseaudio --check
возвращается прямо в командную строку.
Если я попытаюсь получить свойства SSH X, я получу:
user1@remote-pc:~$: xprop -root | grep PULSE
PULSE_COOKIE(STRING) = Some stuff here
PULSE_SERVER(STRING) = "{30ab51874e4a0ca492830f1400000007}unix:/home/user2/.pulse/30ab51874e4a0ca492830f1400000007-runtime/native"
PULSE_SESSION_ID(STRING) = "30ab51874e4a0ca492830f1400000007-1407765989.424751-1424846683"
PULSE_ID(STRING) = "12165@30ab51874e4a0ca492830f1400000007/2040"
Хорошо. Я видел вопросы, связанные с этой проблемой, но в каждом случае спрашивающий хочет передавать звук по сетевому соединению, чего я не хочу делать. Так что мне настроить, PULSE_SERVER
чтобы быть?
решение1
Кажется, я решил проблему, запустив
pax11publish -r
Теперь xprop -root | grep PULSE
показывает:
PULSE_SERVER(STRING) = "{9899a0f46bdae6bbc8e6e8b200000005}unix:/home/user1/.pulse/9899a0f46bdae6bbc8e6e8b200000005-runtime/native"
Видимо, pulseaudio --check
обычно должен перейти в командную строку. Видимо, это означает, что он запущен.
решение2
Поместите это в файл ~/.bashrc на удаленном сервере (если вы используете Bash в качестве оболочки по умолчанию):
if test "$SSH_CLIENT" ; then export PULSE_SERVER=tcp:localhost; fi
или положить
default-server = tcp:localhost
в/etc/pulse/client.confили в файлах с таким же именем в разделепульскаталог в каталоге пользовательских файлов конфигурации, если такие файлы используются. См.https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.htmlдля получения более подробной информации о каталогах.