Raspberry Piをネットワーク経由で音声を再生できるPulseAudioシンクとして使いたいのですが、どうすればいいですか?
手始めに、ローカルでPulseaudioを動かしたいのですが、様々なエラーに遭遇しています。推奨されているDebianのイメージを使っています。
PulseAudioを起動して実行するための最良の手順は何でしょうか?
今まで試した内容です。
これまでの私の手順は以下のようなものでした。
PulseaudioとVLCをインストールします。
sudo apt-get install pulseaudio
GStreamerがpulseaudioのシンクを使うように設定する。
gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink
オーディオデバイスのカーネルモジュールをロードする
sudo modprobe snd_bcm2835
mp3でVLCを実行する
vlc
VLCが何度もクラッシュし、このエラーが表示されます。
[0x7503d0] alsa audio output error: cannot write: Broken pipe
Raspberry PiでALSAシンクを使って、以下のような手順で動作させました。
必要なファイルをインストールする。
sudo apt-get install pulseaudio pulseaudio-module-zeroconf alsa-utils avahi-daemon
ALSA を有効にする。
sudo modprobe snd-bcm2835 # load module for single boot
echo "snd-bcm2835" | sudo tee -a /etc/modules # load module for persistance
ネットワークの設定を行うには
sudo nano /etc/pulse/default.pa
と入力し、行のコメントを解除してください。
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-zeroconf-publish
pulseaudioサーバを起動するには、次のようにします。
pulseaudio -D
paplay (sudo apt-get install pulseaudio-utils
) を使って wav ファイルを再生したり、システムのサウンドコントロールパネルでシンクを選択してネットワーク経由で再生すれば、動作確認ができるはずです。
また、システムワイドモードで設定できるかもしれません。
sudo pulseaudio --system
ブート時に pulseaudio をユーザレベルのサービスとして起動させたい場合は、systemd のユニットファイルを作成します。これは、pulseaudio がシステムモードで動くことを好まないので、役に立つかもしれません。https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/
以下は、/etc/systemd/system/pulseaudio.service に私が書いたサービスです。
[Unit]
Description=PulseAudio Sound System
Before=sound.target
[Service]
User=pi
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio
Restart=always
[Install]
WantedBy=session.target
Before= sound.targetの初期化後まで待つように指示します。 BusName= D-Busに接続します。 WantedBy=session.targetは便利なデフォルトですが、何をするものなのかよく分かっていません。
Wheezy raspbian (2012-10-28) でアナログ出力を使って pulseaudio を動作させるのに苦労しました。以下は、システムモードではなく、セッションモードで動作させるために行ったことです。 システムモードでも動作するかもしれませんが、私は試していません。サーバーのセットアップはもう少し手間がかかります。この情報はいろいろなところで見つけましたが、ここに集めることで誰かの助けになることを願っています。
pulseaudioをインストールし、ユーザ(例えばeric)がaudioグループの一員であることを確認します。
sudo apt-get install pulseaudio pulseaudio-utils
sudo adduser eric audio
etc/asound.conf を以下のように変更します。 これにより、pulseaudio が alsa デバイスとしてデフォルトで使用されるように設定され、アプリケーションは追加の設定なしに使用できるようになります。 最初の2つの宣言は(コメントされているものも含めて)元のファイルにあったものです。
pcm.mmap0 {
type mmap_emul;
slave {
pcm "hw:0,0";
}
}
#pcm.!default {
# type plug;
# slave {
# pcm mmap0;
# }
#}
pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }
次の行を /etc/pulse/daemon.conf に追加してください。
default-sample-rate = 48000
resample-method = trivial
trivialは最も低品質な方法ですが、約6%のCPUを使用します。src-sinc-fastest
も私にとっては有効ですが、約25%のCPUを使用します。 他の方法も同様に機能するかもしれません。 この後のビットは必要性がよくわからないのですが、魔法のような成分だと思います。詳しくはこちら](http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=25684&p=234267&hilit=pulseaudio#p234267)を参照してください。
最後に、曲の再生と再生の間のオーディオポップを黙らせるには、/etc/pulse/default.paのこの行を以下のようにコメントアウトしてください。
#load-module module-suspend-on-idle
2つのソースを同時に再生すると、まだいくつかのドロップアウトがありますが、もしその改善策を見つけたら、この回答に追加します。