デスクトップLinuxの音声出力を,Volumio のようなサウンドサーバーに転送&再生する方法です.
転送には pulseaudio を使います.たとえば
という環境があるとして,デスクトップからLAN経由で音声データをラズパイ側に転送,ラズパイにつながったスピーカーで再生,ということができるようになります.
設定方法
- volumio 側が pulseaudio のサーバ
- デスクトップ側が pulseaudio のクライント
とします.
pulseaudio サーバ側の設定 (つまりVolumio側)
インストール
必要なパッケージをインストールします
$ sudo apt-get install pulseaudio pulseaudio-module-zeroconf avahi-daemon
pulseaudio の設定
設定ファイルは /etc/pulse/system.pa です
pulseaudio の認証方式は
- 接続元IPで制限する方法
- クッキーを使って認証を行う方法
などがあります
前者の接続元IPで制限する方法を使う場合は, /etc/pulse/system.pa の末尾に以下の2行を追加します.
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/24 load-module module-zeroconf-publish
これで192.168.0.0/24 からの接続を無条件に許可します.言うまでもありませんが,IPアドレスは必要に応じて適宜変更してください
pulseaudio の自動起動
systemd を使います
まず pulseaudio の設定ファイル /etc/pulse/daemon.conf を確認します
local-server-type = user
の行があれば削除(コメントアウト)します
次に systemd 用の設定ファイルを作ります.
以下の内容を,/lib/systemd/system/pulseaudio.service というファイルに保存します.
[Unit] Description=pulseaudio sound server [Service] Type=forking PIDFile=/var/run/pulse/pid ExecStart=/usr/bin/pulseaudio --system --daemonize [Install] WantedBy = multi-user.target
設定を有効にします
$ sudo systemctl enable pulseaudio.service $ sudo systemctl start pulseaudio
確認
$ sudo systemctl status pulseaudio
で Active: active (running)
と出力されていればOKです
pulseaudio クライアント側の設定 (つまりデスクトップLinux側)
インストール
必要なパッケージをインストールします
$ sudo apt install pulseaudio-module-zeroconf avahi-utils pasystray
動作確認
まずラズパイ側の pulseaudio に接続できるか確認します
$ pactl -s <ラズパイのホスト名> info
volumioを使っている場合は,デフォルト値としてラズパイのホスト名が volumio.local と設定されています.
うまく接続できると以下のような出力になります
$ pactl -s volumio.local info Server String: volumio.local Library Protocol Version: 33 Server Protocol Version: 29 Is Local: no Client Index: 29 Tile Size: 65472 User Name: pulse Host Name: volumio Server Name: pulseaudio Server Version: 5.0 Default Sample Specification: s32le 2ch 48000Hz Default Channel Map: front-left,front-right Default Sink: alsa_output.platform-soc_audio.analog-stereo Default Source: alsa_output.platform-soc_audio.analog-stereo.monitor Cookie: xxxx:xxxx
次に avahi の名前空間を確認します.
$ avahi-browse -a
LAN内で稼働しているサービスの一覧が出力されます.
ラズパイ側が正常に動いている場合は以下の行があるはずです.
eth0 IPv4 pulse@volumio PulseAudio Sound Server local
このように "pulse@ホスト名" で pulseaudio のサーバーが見つかれば成功です
デスクトップの設定
GUIがあります.
$pasystray
これでタスクトレイにスピーカーのアイコンが出てきます."default slink" がデフォルトの音声出力先デバイスになります.ここから volumio を選択します.