長いタイトルや(笑)
別に聞く側が Windows で無くてもええんけど、わかりやすくするため、Linux → Windows とする。
必要な物
手順
1. Windows から Linux にログインできることを確認し、終ったら一度切断する
2. TeraTerm の SSH 転送の設定で Linux (リモート) の 4000 番ポートを Windows (ローカル) の 4000 番ポートへ転送するように設定する。
3. Windows 側の PulseAudio の設定ファイル default.pa の内容は次のようにする (cf. リモートサーバのサウンド出力を手元のPCで再生する)
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 port=4000 load-module module-waveout
(接続許可は localhost のみでよい。ポートは 4000 とする。)
4. Linux にログインし、環境変数 PULSE_SERVER を localhost:4000 にセットする。
export PULSE_SERVER=localhost:4000
5. プレイヤーを起動して鳴れば成功。
mplayer -ao pulse hoge.ogg
思ったこと
48000Hz × 16ビット × 2 チャンネルの PCM を送る場合、大目に見て 2Mbps *1の高速転送を必要とする。
TCP 通信なので、パケット消失などが起こると突っかかる。
ただ、実験に使った家⇔大学間の通信 (MPlayer 使用/実測値 1.5Mbps/SSH の暗号化は 1024 ビット RSA 使用) では時々ラグるが安定していれば聞くのには耐えられ、実用に足りる。X アプリと同時だと厳しいかも。
ALSA を使う場合も転送できる (alsa-plugins-pulseaudio を Linux にインストールしておく) が、一度 ALSA を経由することになるためラグの頻度が上がる。timidity を使うことはもはや実用的では無い。
*1:44100 Hz でも 1.8Mbps 以上必要