2007年12月5日水曜日

PulseAudioで他PCのサウンドを再生

Skypeが使えなかったり、Mplayerもパッチ当てなきゃプラグインは同梱されてない、Audacityもまだ非対応とまだまだ壁も大きいPulseAudio。
ただ、複数のサウンドカードを統合的に扱えたり、LAN内の他のマシンにサウンドを渡したり受け取ったりできるというちょっと変わった機能を持っている面白い面も。
普通に使う分にはALSAのdmixで十分だし浸透もしていますが、ちょっと凝ったこともしてみたいじゃないですか。
と、いうことで、大学にてTeX程度にしか活用していないFedora8マシン(当然スピーカなどは接続していない)のサウンドをWindowsマシンに飛ばしてみることに。
なんとこのPulseAudio、Win32版のバイナリも提供してます。ただ、ほんとバイナリだけで、設定ファイルなどは一切ないストイックぶり。つーか不親切だぜw
まずWin32版のPulseAudioをコチラからDL、展開します。そして展開したディレクトリ(exeファイルなどがある階層)にdefault.paというファイルを作成します。内容は

load-module module-waveout
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16

です。192.168.0.0/16の部分は各自の環境に合わせて変更してください。接続を許したいネットマスクを指定します。
この状態で、コマンドプロンプトより

c:\pulseaudio-0.9.6-1\pulseaudio.exe -D

とコマンドを打ちます。パスは適宜読み替えてください。
この状態で、特にエラーがでなければ成功です。
続いて、Linux側の設定です。こちらは非常にシンプルで、PulseAudio appletより
「Default server」->「Other」を選択し、ダイアログボックスにWinマシンのIPかホスト名を入力します。うまくいけばこれでLinuxのPulseAudio経由のサウンドはWindowsで再生されます。
Windowsの方はバッチファイルでも作っておくと楽かもしれません。これにより、amaroKで音楽を再生するのはLinuxに任せることができるようになりました。ついでにPrismによるGoogleTalkもLinuxで実行させてます。発言があったときにはちゃんとサウンドがなります。Winではプログラムを実行したりするのでfb2kでの音楽の再生は止めざるを得ないときがありますからねぇ。
しかし、これで私の環境は他人に分かりにくくなりましたね(苦笑) 他の人が私のPCから漏れる音がうるさいということで音楽プレーヤーを止めようにも、まさかLinuxで鳴っているとは考えないでしょうし。まぁ、ヘッドフォンケーブル引っこ抜かれるんですけどね^^;
できたら対応したいのはamaroKのアルバムジャケット表示。まぁこれくらいは体裁にこだわらなければそっこーで用意できるので、明日あたりささっと作ってしまおう。ほんと、SuperKarambaとdcopさまさまだっぜ。
そのうち、その逆も実行してみたいところ。Winの音をLinuxで再生できないだろうかなと。こっちはWinESD使わないと無理っぽいからなぁ。PulseAudioの擬似ドライバでも開発されたら別だけど・・・。まぁ、Winの音をLinuxで再生ってのは主に仮想OSでの使用を考えてるから、あまり重要ではないのだけれど。
そうそう、LANにてサウンドを飛ばすのに用いる帯域は1ストリームあたりおよそ200KB/s弱でした。LAN環境なら余裕ではないかと。例えば、amaroKで音楽を鳴らしながらPrismでチャットをし、ニコニコしてたら600KB/sです。案外喰わないもんですね。これなら無線でも余裕かな。
と、いうことであまり実用的ではないPulseAudioの使い方紹介でした。WinでPulseAudio経由にてサウンドを鳴らす方法はぼちぼち調べてみますかね。

0 件のコメント:

コメントを投稿