プログラムはSSHで実行され、実行中のコンピュータのpulseaudioにアクセスします。

プログラムはSSHで実行され、実行中のコンピュータのpulseaudioにアクセスします。

SSHを介してリモートでプログラムを実行したいが、実際にプログラムが実行されているリモートコンピュータにオーディオを送信したいと思います。これは通常ALSAで動作しますが、pulseaudioはクライアント接続を許可する前にいくつかのセッションバリデータを明確にチェックします。

このテストを厳しくしないようにするにはどうすればよいですか?

local: $ ssh remote           # remote is running pulseaudio and has sound hardware

remote:$ paplay something.wav
Connection failure: Connection refused

pa_context_connect() failed: Connection refused
remote:$ audacious something.mp3 # opens on local's X11 display
pulseaudio: Failed to connect to server: Connection refused
pulseaudio: Failed to connect to server: Connection refused

答え1

私の場合、次は私にとって効果的でした。

pax11publish -r

答え2

DBUS_SESSION_BUS_ADDRESS原因は、sshにPulseaudioに接続するように設定された接続がないことです。ソリューション(ベースこの投稿)は、SSH経由で接続するときに使用されるmyに次の行を追加することです~/.bashrc

if [[ -n $SSH_CLIENT ]]; then
    export DBUS_SESSION_BUS_ADDRESS=`cat /proc/$(pidof nautilus)/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS | cut -d '=' -f2-`
fi

NautilusのPIDを使用し(セッションでプロセスが常に実行されるように変更する必要がある場合があります)、環境変数を検索してエクスポートしDBUS_SESSION_BUS_ADDRESSます。

これにより、Pulseに接続されたプログラムが正しく実行されます。セッションd-busを介して通信する他のプログラムも動作します(例えば、ドライバーのためのaudtool)。勇敢なコマンドライン経由)。

関連情報