Piにraspbianをインストールし、デスクトップからPiにすべてのオーディオをストリーミングしてスピーカーを駆動するためにPulseAudioシンクを構成しました。
私はこの素晴らしい説明に従いました:http : //www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
最初は、これは問題なく機能するように見えました。ただし、デスクトップから送信されたオーディオは、Piで途切れることがありません。まるで、いくつかのサンプルが間に入るだけで一定のバッファアンダーランが発生したかのようです。
私は原因を見つけるために一日中過ごしたが、役に立たなかった。基本的なセットアップは次のとおりです。
- 有線LAN接続
- 最新のファームウェア更新を伴う最新のraspbian pi(26 Sep 2013)
- 両側のPulseAudio 2.0(Ubuntuデスクトップ)
- mplayer、totem、ffplayによる再生
- module-native-protocol-tcpを介したネットワーク伝送
これは私が試したものです:
- Piで直接オーディオを再生することは完全に機能します。
- 他の(デスクトップ)コンピューターへのストリーミングは正常に機能します。
- 直接接続($ PULSE_SERVERを指定)で音声を送信すると、非常にわずかなwith音で非常にうまく機能しますが、問題2が発生しやすくなります(以下を参照)。
- デスクトップPulseAudioトンネリング経由でオーディオを送信すると、一定のst音が発生します
- 優先順位の引き上げ/リアルタイムスケジューリング...助けにはなりませんでした
- サンプリングレートを48 kHzに修正しました...解決しませんでした
- リサンプリングアルゴリズムを「自明」に設定しました...助けにはなりませんでした
- default-fragments / fragment-sizeの調整...助けにはなりませんでした
PulseAudioログで問題の兆候を見つけることができません(再生を開始した時点から表示されます)。
D: [alsa-sink] protocol-native.c: Requesting rewind due to end of underrun. D: [alsa-sink] sink-input.c: Requesting rewind due to uncorking D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo is 0x0000, resuming I: [alsa-sink] alsa-sink.c: Trying resume... I: [alsa-sink] alsa-util.c: cannot disable ALSA period wakeups D: [alsa-sink] alsa-util.c: Maximum hw buffer size is 341 ms D: [alsa-sink] alsa-util.c: Set buffer size first (to 16384 samples), period size second (to 16384 samples). I: [alsa-sink] alsa-util.c: ALSA period wakeups were not disabled D: [alsa-sink] alsa-sink.c: Latency set to 25.00ms D: [alsa-sink] alsa-sink.c: hwbuf_unused=60736 D: [alsa-sink] alsa-sink.c: setting avail_min=15665 I: [alsa-sink] alsa-sink.c: Time scheduling watermark is 15.00ms I: [alsa-sink] alsa-sink.c: Resumed successfully... I: [alsa-sink] alsa-sink.c: Starting playback. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes busy. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] ratelimit.c: 115 events suppressed D: [alsa-sink] alsa-sink.c: Wakeup from ALSA! ... no more output, but stuttering continues ...
問題2:上記のように、直接接続することでまったく問題ないオーディオを得ることができます。ただし、ストリーム内で(mplayerを使用して)数回スキップすると、PulseAudioサーバーがハングし、オーディオがまったく再生されません。mplayerを再起動すると復活する場合があります。ときどきハングアップして、PulseAudioを再起動する必要があります。ボリュームレベルを変更するだけでハングすることさえあります。
PulseAudioのドキュメントによると、トンネル接続を介した直接接続の利点は、より優れたバッファリング制御が得られることです。これは、直接接続で良い音声が得られる理由を示しているようです:http : //www.freedesktop.org/wiki/Software / PulseAudio / Documentation / User / Network /
私は今アイデアを失っています。st音と問題2の原因は何ですか?デバッグを進める方法についてのアイデアもいただければ幸いです。