回答:
ネットワーク上に「直接接続」を作成するための公式の指示は、ほとんどの人にうまくいけばいいのですが、pulseaudioのようで、うまくいきません。何時間もかかりました。[「直接接続」の他に、さらに下で説明する「トンネル」メソッドを使用することもできますが、最初にこれを読むことをお勧めします。]
piに(fedora 17)デスクトップストリーミングサウンドができました。/etc/pulse
両側の構成ファイルを最小化しました。デスクトップ側:
/etc/pulse/client.conf
# See man pulse-client.conf
default-server = tcp:192.168.2.13:4713
デフォルトのpulseaudioポートを持つ私のpiのLANアドレス。しかし、ここでしばらく混乱したことがあります。サーバーが指定されていると、pulseaudioは起動しません。
> pulseaudio --start
N: [pulseaudio] main.c: User-configured server at tcp:192.168.2.13:4713, refusing to start/autospawn.
フォアグラウンドで実行されます(おそらくpulse-client.confを読み取らないためでしょうか?)。 しかし、結局のところ、デスクトップ(送信)側で実行する必要はまったくありません。これはpulseaudioのドキュメントでは説明されていません。これを使用lsof -i -P
すると、さまざまなメディアプレーヤーの低レベルのプラグインが作業を行うようです。
したがって、その1行の「client.conf」は、実際にデスクトップ/クライアント側で必要なものすべてです。ネットワークを使用するだけの場合(ただし、以下の「さらに複雑な問題」を参照)。
(受信側/サーバー側の)pulseaudioデーモンはシステムサービスとして実行できますが、pulseの開発者はこれに対して推奨します。実際、piではinitスクリプトが警告を発行するだけです。まだ起動する必要がありますそれを自分で。Fedoraにはsystemdブートサービスエントリも含まれていません。
したがって、pi側では、このように構成されたpulseaudioサーバープロセスを明示的に開始および停止する必要があります。
/etc/pulse/daemon.conf
# See man pulse-daemon.conf
log-level = info
exit-idle-time = 10800 # 3 hours
-1を使用exit-idle-time
して、デーモンを無期限に実行し続けることができます。これは秒であり、デフォルトは20であることに注意してください(これを設定しないと「不思議なことに」死に続けることを意味します)。
/etc/pulse/default.pa
# See man default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.2.0/24
load-module module-alsa-sink device=hw:0,0
これはネットワークアプリであるため、ルートとして実行することはお勧めできません。ただし、で述べたようにman pulseaudio
、プロセスを「優先」して優先順位を高くすることもお勧めします。あなたは使って手動でこれを行うことができnice
ますが、PulseAudioは、ルート、またはのメンバーのためにそれを自動的に行いますpulse-rt
、グループ場合は実行ファイルが「setuidさ」である、それはいくつかのルートprivillegesを利用することができますを意味し、正しいunprivelleged UIDにダウンして(ping
とpasswd
これも行う必要があります)。そのため(rootまたはsudoとして):
chmod u+s /usr/bin/pulseaudio
pulse-rt
pulseaudioがraspbianにインストールされている場合、グループが作成されないため、次のようになります。
groupadd pulse-rt
これにより、1003のようなgidが得られます。そのグループに(たとえば)ユーザーpiを追加します。
usermod -aG pulse-rt pi
しかし、Raspbianでは、piとしてレニスすることはできません。そのためには、次を追加し/etc/security/limits.conf
ます。
@pulse-rt hard nice -20
@pulse-rt soft nice -20
これらの変更を行う前に、実際にログインを実行する必要があります。piでsshを使用する場合は、単に使用しますlogin
。これでpulseaudioを起動でき、-11になります。これはおそらく他のほとんどのプロセスよりも高い優先度です(のNICE値を見てくださいtop
)。
ネットワークからストリーミングされたサウンドの再生中、piのpulseaudioはCPUの約10%とわずかなメモリを使用します。:)それと私のデスクトップは有線LAN上にあります。パルスは生のpcmデータをストリームするので(帯域幅の使用量はソースのサンプルレート、1 kB / s以上に対応します)。残念ながら、ビデオを視聴している場合、音に顕著な遅れがあります。
残念ながら、私のPCのさまざまなサウンドアプリケーションはすぐに動作しませんでした。 mpg123
まったく実行されません。そのためには、fedoraでmpg123-plugins-pulseaudio
パッケージが必要です。ブラウザー内のフラッシュなど(youtudeなど)が必要ですalsa-plugins-pulseaudio
(これらは実際にリモートサーバーに接続するものです)。他のディストリビューションにも同様のパッケージが必要です。以前にpulseaudioを使用したことがある場合(私はそうではありません)、すでにインストールされている可能性があります。
KDEのデスクトップ機能も機能しませんでした。これは、ローカルpulseaudioサーバーを探すため、解決が難しい問題です。また、説明したように、直接接続を使用すると、サーバーをローカルで実行できなくなります。これを回避する方法は、「トンネル」メソッドを使用することです。
これはpulseaudioのドキュメントで言及されている他の方法です。この場合、サーバーが両側で実行され、一方が他方にハンドオフします。これを行うには、「default-server」をコメントアウトして、以下を含む/etc/client.conf
ローカル/etc/default.pa
を追加します。
load-module module-tunnel-sink sink_name=rpi_tunnel server=tcp:192.168.2.13:4713 sink=bcm1
入れないsink_name
と、pulseaudioは起動しません。sink
次に、名前を必要とPI側、にシンク名を指します。そこに対応sink_name
するmodule-alsa-sink
行を追加しdefault.pa
ます:
load-module module-alsa-sink device=hw:0,0 sink_name=bcm1
両側でサーバーを起動します。KDEブリープを含むすべてのものが持ち運ばれたが、ブラウザのフラッシュ再生はひどく途切れた。ただし、別のデスクトップ環境(実際には、単なるウィンドウマネージャーfvwm)では問題ありませんでした。
私はKDEが好きですが、音を立てずに生きることができるので、今のところは直接接続に固執します。
問題がある場合pulseaudio -vvvv --log-level=debug
は、pi で使用すると多くのデバッグメッセージが表示されます。最初はpiでサウンドを取得できなかったが、これは「ALSA bcm2835ドライバーのバグに関連する」問題を報告しました。サウンドはalsaだけで問題なかったので、奇妙なようでした。 pulseaudioで— apt-get remove pulseaudio
再インストールapt-get install pulseaudio
はこれを修正するように見えました...私が見たい解決策ではありませんが、少なくとも今は、すべてのボックスにスピーカーを接続することなく、tishを聞くことができます。主に。