私のローカルマシンでsshを介してフィンチでサウンド/通知を再生する


9

だから私はfinch、私が入っているリモートマシンで実行されているコマンドラインチャットクライアント(pidginを考える)を持っていますsshfinch通知音があり、特定のイベントが発生したときにコマンドを実行して、サウンドファイルをとして渡すことができます%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

もちろん、パルスオーディオで認証を使用することはできませんが、このソリューションはお勧めできません。リモート接続を回避するために、少なくともファイアウォールを使用してください。


で「失敗:モジュールの初期化に失敗しました」を取得してい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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.