環境
- Ubuntu 22.04
やりたいこと
サーバーAとBがある。サーバーAにはtest.wavがあり、サーバーBにスピーカーがある。
サーバーAから aplay test.wavを実行し、サーバーBのスピーカーから音を鳴らしたい。
今回はPulseAudioを使って実現してみる。
- サーバーB: PulseAudioサーバー
- サーバーA: PulseAudioクライアント
サーバー側の設定
echo 'load-module module-native-protocol-tcp listen=0.0.0.0 auth-anonymous=1' > /etc/pulse/default.pa.d/my.pa
設定反映
$ systemctl --user restart pulseaudio.service $ systemctl --user restart pulseaudio.socket
sshすると自動で起動するが、再起動後に反応しなくなってしまうので自動起動するようにしておく
$ systemctl --user enable pulseaudio Created symlink /home/thr3a/.config/systemd/user/default.target.wants/pulseaudio.service → /usr/lib/systemd/user/pulseaudio.service. Created symlink /home/thr3a/.config/systemd/user/sockets.target.wants/pulseaudio.socket → /usr/lib/systemd/user/pulseaudio.socket.
クライアント側の設定
設定前に確認
$ pacmd list-sinks
1 sink(s) available.
* index: 0
name: <auto_null>
driver: <module-null-sink.c>
flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
state: IDLE
suspend cause: (none)
priority: 1000
volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
balance 0.00
base volume: 65536 / 100% / 0.00 dB
volume steps: 65537
muted: no
current latency: 2045.22 ms
max request: 375 KiB
max rewind: 375 KiB
monitor source: 0
sample spec: s16le 2ch 48000Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
configured latency: 2000.00 ms; range is 0.50 .. 2000.00 ms
module: 13
properties:
device.description = "Dummy Output"
device.class = "abstract"
device.icon_name = "audio-card"
設定
pacmd load-module module-tunnel-sink server=192.168.16.16
いざ確認 問題なければこれでサーバーBから音が鳴る
aplay /tmp/test.wav
設定の永続化
ただこれだと毎回設定しなくちゃいけなくて面倒
/etc/pulse/client.conf.d/my.conf 作成して以下
default-server = 192.168.16.16
確認
$ pacmd list-sinks
1 sink(s) available.
* index: 24
name: <tunnel-sink.192.168.16.16>
driver: <module-tunnel.c>
flags: NETWORK HW_MUTE_CTRL HW_VOLUME_CTRL LATENCY
state: SUSPENDED
suspend cause: IDLE
priority: 0
volume: front-left: 65536 / 100%, front-right: 65536 / 100%
balance 0.00
base volume: 65536 / 100%
volume steps: 65537
muted: no
current latency: 0.00 ms
max request: 0 KiB
max rewind: 0 KiB
monitor source: 24
sample spec: s16le 2ch 44100Hz
channel map: front-left,front-right
Stereo
used by: 0
linked by: 0
fixed latency: 250.00 ms
module: 47
properties:
device.description = "USB Audio and HID Analog Stereo on thr3a@NuxBox"
tunnel.remote.server = "192.168.16.16"
device.icon_name = "audio-card"
tunnel.remote_version = "35"
tunnel.remote.user = "thr3a"
tunnel.remote.fqdn = "NuxBox"
tunnel.remote.description = "USB Audio and HID Analog Stereo"