[2021-10-09]

PulseAudioでSSHサーバ側の音声をクライアント側で再生する

RDPと違い、VNCでは接続先の音声を送れないことがある。

接続先のデスクトップ(SSH・VNCサーバ)で再生された音声をSSH経由で送信し、SSH・VNCクライアント側で再生できるようにする。

音声を受け取る側(SSH・VNCクライアント、PulseAudioサーバ)

/etc/pulse/default.pa

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.0/8
load-module module-null-sink sink_name=DummyOutputRemote0 sink_properties=device.description="DummyOutputRemote0"
load-module module-loopback source=DummyOutputRemote0.monitor source_dont_move=true

DummyOutputRemote0に対して音声が送られてくる。

DummyOutputRemote0.monitorで入力として音声を拾うこともできる。

~/.ssh/config

Host your-server
# VNC
LocalForward 15900 localhost:5900
# PulseAudio
RemoteForward 14713 localhost:4713

音声を送る側(SSH・VNCサーバ、PulseAudioクライアント・サーバ=中継用)

/etc/pulse/default.pa

load-module module-tunnel-sink sink_name=Remote server=tcp:127.0.0.1:14713 sink=DummyOutputRemote0

PulseAudio再起動(pulseaudio -k)後、 接続先のデスクトップ上で音声出力デバイス(Sink)をDummyOutputRemote0に設定する。 DummyOutputRemote0が表示されない場合、どこか設定が間違っていると思われる。