Воспроизведение звука / уведомления в Finch через SSH на моем локальном компьютере


9

Итак, у меня есть finchклиент чата командной строки (думаю, pidgin), работающий на удаленной машине, в которую я sshвхожу. finchимеет звуковые уведомления и может запускать команду при возникновении определенных событий, позволяя передать звуковой файл как %s. напримерmplayer %s

на удаленном компьютере, когда появляется уведомление, какую команду можно запустить, чтобы воспроизвести все, что %sнаходится на моем локальном компьютере?

Ответы:


7

Если вы используете Pulse-Audio в качестве звукового сервера, вы можете использовать module-native-protocol-tcpдля приема TCP-соединения с вашего удаленного компьютера.

В следующем примере я использую туннель ssh для пересылки аудио запроса с удаленного компьютера на локальный.

На локальной машине сделайте что-то вроде:

pactl load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
ssh -R 9999:127.0.0.1:4713 you@remotehost

Затем на удаленной машине вы можете использовать paplay

paplay -s 127.0.0.1:9999 soundfile.wav

ДОБАВЛЕНО Я обнаружил, чтоauth-ip-aclне принимаетlocalhostв качестве допустимого параметра, вы должны использовать127.0.0.1(или все, что ваша машина использует адрес localhost).

РЕДАКТИРОВАТЬ Должно бытьssh -R, нетssh -L(мы пересылаем удаленный порт на локальный порт).


Если у вас старая версия pulse-audio (до 0.9.3), вы можете использовать авторизацию на основе файлов cookie.

pactl load-module module-native-protocol-tcp auth-anonymous=1 auth-cookie-enabled=0
scp ~/.pulse-cookie you@remotehost:
ssh -R 9999:localhost:4713 you@remotehost

Очевидно, что вы можете просто не использовать аутентификацию в Pulse-Audio, но я не могу рекомендовать вам это решение. Используйте, по крайней мере, брандмауэр, чтобы избежать удаленных подключений.


получить «Сбой: инициализация модуля не удалась» pactl load-module module-native-protocol-tcp auth-ip-acl=localhost. Я пропускаю зависимость или что-то?
тестер

Попробуйте pulseaudio --check ; echo $?проверить, работает ли сервер pulseaudio. Он должен печатать, 0если работает.
andcoz

На моей машине (opensuse 12.1) модуль находится в /usr/lib64/pulse-1.1/modules/module-native-protocol-tcp.so. На каком дистрибутиве вы работаете?
andcoz

моя локальная машина работает 0нормально .. пульт находится на Ubuntu 11.10, а мой локальный на 11.04. Я попытался ссылаться на модуль непосредственно на моем местном, pactl load-module /usr/lib/pulse-0.9.22/modules/module-native-protocol-tcp.so auth-ip-acl=localhost и я получаю Failure: Invalid argument. Есть идеи? (кстати, спасибо за помощь)
тестер

auth-ip-aclподдерживается с версии 0.9.3. См freedesktop.org/wiki/Software/PulseAudio/Documentation/User/...
andcoz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.