tocando um som / notificação em tentilhão sobre ssh na minha máquina local


9

Então, eu tenho finch, um cliente de bate-papo de linha de comando (pense pidgin) em execução em uma máquina remota na qual eu estou ssh. finchpossui sons de notificação e pode executar um comando quando ocorrem certos eventos, permitindo que você transmita o arquivo de som como %s. por exemplomplayer %s

na máquina remota, quando a notificação ocorre, que tipo de comando eu poderia executar para reproduzir o que %sestiver na minha máquina local?

Respostas:


7

Se você usar áudio de pulso como servidor de som, poderá module-native-protocol-tcpaceitar a conexão TCP da sua máquina remota.

No exemplo a seguir, eu uso um túnel ssh para encaminhar a solicitação de áudio da máquina remota para a local.

Na máquina local, faça algo como:

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

então na máquina remota você pode usar paplay

paplay -s 127.0.0.1:9999 soundfile.wav

ADICIONADO Descobri queauth-ip-aclnão aceitalocalhostcomo um parâmetro válido, você precisa usar127.0.0.1(ou o que sua máquina usa o endereço do host local).

EDIT Deveria serssh -R, nãossh -L(estamos encaminhando uma porta remota para uma porta local).


Se você possui uma versão antiga do pulse-audio (anterior à 0.9.3), pode usar a autorização baseada em cookies.

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

Obviamente, você pode simplesmente não usar nenhuma autenticação no áudio de pulso, mas não posso recomendar esta solução. Use, pelo menos, um firewall para evitar conexões remotas.


recebendo "Falha: falha na inicialização do módulo" pactl load-module module-native-protocol-tcp auth-ip-acl=localhost. Estou perdendo uma dependência ou algo assim?
Testador

Tente pulseaudio --check ; echo $?verificar se o servidor pulseaudio está em execução. Ele deve ser impresso 0se estiver em execução.
22312 Andcoz

Na minha máquina (opensuse 12.1), o módulo está em /usr/lib64/pulse-1.1/modules/module-native-protocol-tcp.so. Em qual distribuição você está executando?
22312 Andcoz

minha máquina local faz eco 0corretamente .. remoto está no ubuntu 11.10 e meu local está no 11.04. Eu tentei referenciar o módulo diretamente no meu local pactl load-module /usr/lib/pulse-0.9.22/modules/module-native-protocol-tcp.so auth-ip-acl=localhost e eu recebo Failure: Invalid argument. Qualquer ideia? (btw obrigado por ajudar)
testador

auth-ip-aclé suportado desde a versão 0.9.3. Veja freedesktop.org/wiki/Software/PulseAudio/Documentation/User/…
andcoz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.