freebsd pulseaudioでネットワーク転送

bhyveを使っていてオーディオ転送が必要になったのでメモ。
Linux関係の場合、ディストリビュータの手によってある程度設定が済んでいるため、全体的に行うことは少ないが、FreeBSDに適用するために結構頑張るはめになった。楽するためにUbuntuやRedhatへ移るのもありだが、何が悪いか切り分けできずに取れる選択肢がOS再インストールしか手段がないというのはあまりにも知恵がないと思うので・・・

■やりたいこと
単純な話、スピーカー端子を持つマシンをPulseAudioサーバに、音声をスピーカーに流したいPulseAudioクライアントがいるだけ。

■アプリケーションのインストール(サーバ側クライアント側共通)
# pkg install pulseaudio paman pavucontrol paprefs
  pulseaudio → 音声転送サーバでありクライアントであり。どのような機能を持つかを描いた図がWikipediaに載っているがややこしすぎる。
  paman → pulseaudio実行中freebsdにてある程度の設定を表示させるために使用。
  pavucontrol → mixer相当。
  paprefs → 音声転送をGUIで設定できるとされているが、結果的にいらないかもしれない。

■サーバ側の設定
# vi /usr/local/etc/pulse/default.pa
- #load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+ load-module module-oss device="/dev/dsp" sink_name=output source_name=input
FreeBSDはALSAではなくossを使用するため、/dev/dspがデバイス名となる。これを使用するためコメント化を解除。

- load-module module-jackdbus-detect channels=2
+ #load-module module-jackdbus-detect channels=2
コメント化していたが、何故したのかはわからない。

+ load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 auth-anonymous=1
肝。pulseaudioサーバが再生するのは127.0.0.1および192.168.1.0/24のネットワークからの接続のみ(auth-ip-acl)。認証は必要としない。(auth-anonymous)


--- paprefsを使用できるようにするために…
# vi /usr/local/share/glib-2.0/schemas/org.freedesktop.pulseaudio.module-group
この設定を全て書き込む→ https://fossies.org/linux/misc/pulseaudio-14.2.tar.xz/pulseaudio-14.2/src/modules/gsettings/org.freedesktop.pulseaudio.gschema.xml?m=t

# glib-compile-schemas /usr/local/share/glib-2.0/schemas

pulseaudio の起動
$ pulseaudio -k && pulseaudio -D


■クライアント側の設定
.cshrcに setenv PULSE_SERVER サーバのIPアドレス
もしくは
.shrcに export PULSE_SERVER=サーバのIPアドレス
.xinitrcや.xsession、.xprofile等に置く場合は.shrcと同じ。

$ pulseaudio -k && pulseaudio -D



■注意事項
・xrdp上のターミナルからpulseaudioの停止・開始を行わないほうが良い。
・ネットワーク経由では遅延を感じない。ただし、再生最初部分では音が切れているかもしれない。

■解決までに見たページ等
https://forums.freebsd.org/threads/paprefs-pulseaudio-core-dumped-with-glib-gio-error-settings-schema-org-freedesktop-pulseaudio-module-group-is-not-installed.77370/
https://qiita.com/tukiyo3/items/d39c90f91d782001e7d7
https://wiki.archlinux.jp/index.php/PulseAudio/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB#.E3.83.8D.E3.83.83.E3.83.88.E3.83.AF.E3.83.BC.E3.82.AF.E3.82.92.E4.BB.8B.E3.81.97.E3.81.A6_PulseAudio
https://askubuntu.com/questions/70560/why-am-i-getting-this-connection-to-pulseaudio-failed-error

コメント