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?

testador
fonte

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.

andcoz
fonte
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