Saya telah menginstal raspbian pada Pi saya dan mengkonfigurasi wastafel PulseAudio dengan maksud untuk mengalirkan semua audio dari desktop saya ke Pi, menggerakkan pengeras suara.
Saya mengikuti deskripsi yang bagus ini: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
Pada awalnya, ini tampaknya berhasil tanpa masalah. Namun, audio yang dikirim dari desktop terus-menerus tergagap pada Pi, seolah-olah ada buffer underruns yang konstan dengan hanya beberapa sampel yang hilang di antaranya.
Saya menghabiskan sepanjang hari berusaha mencari penyebabnya, tetapi tidak berhasil. Pengaturan dasar adalah:
- koneksi LAN kabel
- pi raspbian terbaru (26 Sep 2013) dengan pembaruan firmware terbaru
- PulseAudio 2.0 di kedua sisi (desktop Ubuntu)
- Putar ulang melalui mplayer, totem, ffplay
- transmisi jaringan melalui module-native-protocol-tcp
Inilah yang saya coba:
- Memutar audio langsung di Pi berfungsi dengan sempurna.
- Streaming ke komputer lain (desktop) berfungsi dengan baik.
- Mengirim audio dengan koneksi langsung (menentukan $ PULSE_SERVER) berfungsi cukup baik dengan sedikit gagap, tetapi masih rentan terhadap Masalah-2 (lihat di bawah)
- Mengirim audio melalui desktop PulseAudio tunneling memberikan kegagapan konstan
- Meningkatkan prioritas / penjadwalan waktu nyata ... tidak membantu
- Memperbaiki laju pengambilan sampel hingga 48 kHz ... tidak membantu
- Mengatur algoritma resampling ke "trivial" ... tidak membantu
- Menyesuaikan ukuran fragmen / fragmen default ... tidak membantu
Saya tidak dapat menemukan indikasi masalah dalam log PulseAudio (ditunjukkan sejak saya mulai pemutaran):
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 ...
Masalah 2: seperti yang dikatakan di atas, saya bisa mendapatkan audio yang cukup ok dengan koneksi langsung. Namun, setelah beberapa lompatan dalam aliran (menggunakan mplayer), server PulseAudio hang dan tidak memainkan audio sama sekali. Kadang-kadang dapat dihidupkan kembali dengan me-restart mplayer. Terkadang hang sangat buruk sehingga PulseAudio harus dihidupkan ulang. Kadang-kadang bahkan hang ketika saya hanya mengubah level volume.
Menurut dokumen PulseAudio, keuntungan dari koneksi langsung melalui koneksi tunnelled adalah memiliki kontrol buffering yang lebih baik, yang tampaknya menunjukkan mengapa saya mendapatkan audio yang bagus dengan koneksi langsung: http://www.freedesktop.org/wiki/Software / PulseAudio / Dokumentasi / Pengguna / Jaringan /
Saya kehabisan ide sekarang. Apa yang bisa menyebabkan gagap dan Masalah 2? Hanya sebuah ide bagaimana melanjutkan debugging juga akan dihargai.