jouer un son / notification en finch sur ssh sur ma machine locale

9

J'ai donc finchun client de chat en ligne de commande (pensez pidgin) fonctionnant sur une machine distante dans laquelle je me trouve ssh. fincha des sons de notification et peut exécuter une commande lorsque certains événements se produisent, vous permettant de passer le fichier son en tant que %s. par exemplemplayer %s

à partir de la machine distante, lorsque la notification se produit, quel type de commande pourrais-je exécuter pour lire ce qui se %strouve sur ma machine locale?

testeur
la source

Réponses:

7

Si vous utilisez Pulse-Audio comme serveur de son, vous pouvez utiliser module-native-protocol-tcppour accepter la connexion TCP à partir de votre machine distante.

Dans l'exemple suivant, j'utilise un tunnel ssh pour transmettre la demande audio de la machine distante à la machine locale.

Sur la machine locale, faites quelque chose comme:

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

puis sur une machine distante, vous pouvez utiliser paplay

paplay -s 127.0.0.1:9999 soundfile.wav

AJOUTÉ J'ai découvert queauth-ip-acln'accepte paslocalhostcomme paramètre valide, vous devez utiliser127.0.0.1(ou quoi que votre machine utilise l'adresse localhost).

EDIT Il devrait êtressh -R, nonssh -L(nous transmettons un portdistance à un port local).


Si vous avez une ancienne version de pulse-audio (antérieure à 0.9.3), vous pouvez utiliser une autorisation basée sur les 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

Évidemment, vous ne pouvez tout simplement pas utiliser d'authentification en pulse-audio mais je ne peux pas vous recommander cette solution. Utilisez au moins un pare-feu pour éviter les connexions à distance.

andcoz
la source
obtenir "Échec: l'initialisation du module a échoué" pactl load-module module-native-protocol-tcp auth-ip-acl=localhost. Suis-je en train de manquer une dépendance ou quelque chose?
testeur
Essayez pulseaudio --check ; echo $?de vérifier si le serveur pulseaudio est en cours d'exécution. Il devrait s'imprimer 0s'il est en cours d'exécution.
andcoz
Sur ma machine (opensuse 12.1), le module est en place /usr/lib64/pulse-1.1/modules/module-native-protocol-tcp.so. Quelle distribution utilisez-vous?
andcoz
ma machine locale résonne 0correctement .. la télécommande est sur ubuntu 11.10 et ma section locale est sur 11.04. j'ai essayé de référencer le module directement sur mon local pactl load-module /usr/lib/pulse-0.9.22/modules/module-native-protocol-tcp.so auth-ip-acl=localhost et j'obtiens Failure: Invalid argument. Une idée? (btw merci pour l'aide)
testeur
auth-ip-aclest pris en charge depuis la version 0.9.3. Voir freedesktop.org/wiki/Software/PulseAudio/Documentation/User/…
andcoz