Saya mencoba mengatur wastafel PulseAudio pada Raspberry Pi saya, untuk mengalirkan semua suara sistem dari PC saya di sana. Apa cara terbaik untuk melakukannya?
Misalnya, apakah mungkin untuk menonton film atau apakah latensinya terlalu tinggi? Saya mencoba ini beberapa waktu lalu menggunakan gstreamer, tetapi dengan latensi sekitar 2 detik, yang tidak berguna untuk kebutuhan saya.
Jawaban:
The instruksi resmi untuk menciptakan sebuah "hubungan langsung" pada jaringan mudah-mudahan hanya bekerja untuk kebanyakan orang, tetapi tampaknya pulseaudio dan saya tidak bergaul dengan baik: aku butuh jam . [Selain "koneksi langsung", Anda juga dapat menggunakan metode "terowongan" yang dijelaskan lebih jauh ke bawah, tapi saya sarankan membaca ini dulu.]
Saya sekarang memiliki suara streaming desktop (fedora 17) ke pi. Saya telah meminimalkan
/etc/pulse
file konfigurasi di kedua sisi. Di sisi desktop:/etc/pulse/client.conf
Alamat LAN pi saya dengan port pulseaudio default. Tapi ada sesuatu yang membuat saya bingung untuk sementara waktu - dengan server yang ditentukan, pulseaudio bahkan tidak akan memulai:
Ini akan berjalan di latar depan (mungkin karena itu kemudian tidak membaca pulse-client.conf?). Namun , ternyata, Anda tidak harus menjalankannya sama sekali pada sisi desktop (pengiriman) , sesuatu yang tidak dijabarkan dalam pulseaudio docs. Menggunakannya
lsof -i -P
tampak bahwa plugin tingkat bawah untuk berbagai pemutar media melakukan pekerjaan.Jadi, satu baris "client.conf" itu sebenarnya yang Anda butuhkan di sisi desktop / klien, jika semua yang akan Anda lakukan adalah menggunakan jaringan (tapi lihat "Namun Lebih Banyak Komplikasi", di bawah).
Meskipun pulseaudio daemon (di sisi penerima / server) dapat dijalankan sebagai layanan sistem, para pengembang pulsa merekomendasikan untuk tidak melakukannya , dan bahkan pada pi skrip init hanya menyebabkan peringatan dikeluarkan: Anda masih harus memulai itu sendiri. Fedora bahkan tidak memasukkan entri layanan boot systemd untuk itu.
Oleh karena itu, di sisi pi, Anda harus secara eksplisit memulai dan menghentikan proses server pulseaudio, yang dikonfigurasi dengan demikian:
/etc/pulse/daemon.conf
Anda dapat menggunakan -1 untuk
exit-idle-time
menjaga agar daemon tetap berjalan tanpa batas. Waspadalah ini adalah detik dan standarnya adalah 20 (artinya ia akan tetap mati secara "misterius" jika Anda tidak menyetel ini)./etc/pulse/default.pa
Karena ini adalah aplikasi jaringan, bukan ide yang baik untuk menjalankannya sebagai root. Namun, seperti disebutkan dalam
man pulseaudio
, itu juga merupakan ide yang baik untuk "mengubah" proses untuk memberikan prioritas yang lebih tinggi. Anda dapat melakukan ini secara manual dengannice
, tetapi pulseaudio akan melakukannya secara otomatis untuk root, atau anggotapulse-rt
grup, jika yang dapat dieksekusi adalah "setuid", yang berarti dapat menggunakan beberapa privilleges root dan kemudian beralih ke uid yang tidak terbongkar dengan benar (ping
danpasswd
juga perlu melakukan ini). Jadi (sebagai root, atau sudo):Tidak ada
pulse-rt
grup yang dibuat saat pulseaudio diinstal pada raspbian, jadi:Ini akan memberi Anda gid seperti 1003. Tambahkan (misalnya) pi pengguna ke grup itu:
Tetapi pada raspbian, Anda masih tidak akan dapat mengganti sebagai pi. Untuk itu, tambahkan ke
/etc/security/limits.conf
:Anda harus benar-benar menjalankan login sebelum perubahan ini terjadi; jika Anda menggunakan ssh dengan pi, gunakan saja
login
. Sekarang Anda dapat memulai pulseaudio dan itu akan mengubah sendiri -11, yang mungkin merupakan prioritas lebih tinggi daripada sebagian besar proses lainnya (lihat nilai NICE ditop
).Saat memutar suara yang dialirkan dari jaringan, pulseaudio pada pi menggunakan sekitar 10% dari CPU dan jumlah memori yang sepele. :) Ini dan desktop saya ada di LAN kabel; pulsa mengalirkan data pcm mentah (saya percaya), jadi penggunaan bandwidth sesuai dengan laju sampel sumber, 1 kB / dtk dan lebih tinggi. Sayangnya, ada kelambatan yang mencolok dalam suara jika Anda menonton video.
Namun Lebih Banyak Komplikasi ...
Sayangnya, tidak satu pun dari berbagai aplikasi suara dari PC saya langsung berfungsi;
mpg123
tidak akan lari sama sekali. Untuk itu, pada fedora, Anda memerlukanmpg123-plugins-pulseaudio
paket. Untuk hal-hal flash di browser (misalnya, Anda), Anda perlualsa-plugins-pulseaudio
(ini adalah apa yang sebenarnya terhubung ke server jauh). Distro lain harus memiliki paket serupa. Jika Anda pernah menggunakan pulseaudio sebelumnya (saya tidak), Anda mungkin sudah menginstalnya.Lonceng dan peluit desktop KDE juga tidak berfungsi. Ini adalah masalah yang lebih sulit untuk diselesaikan, karena mencari server pulseaudio lokal, dan seperti yang dijelaskan, menggunakan koneksi langsung berarti tidak ada server yang dapat dijalankan secara lokal. Cara mengatasinya adalah dengan menggunakan metode "terowongan".
module-tunnel-sink
Ini adalah cara lain yang disebutkan dalam pulseaudio docs. Dalam hal ini, Anda memiliki server yang berjalan di kedua sisi dan satu tangan ke tangan yang lain. Untuk melakukan ini, beri komentar "default-server"
/etc/client.conf
dan tambahkan lokal yang/etc/default.pa
mengandung:Jika Anda tidak memasukkan
sink_name
, pulseaudio tidak akan memulai. Yangsink
mengacu pada nama wastafel di sisi pi, yang kemudian juga membutuhkan nama; tambahkan yang sesuaisink_name
kemodule-alsa-sink
baris didefault.pa
sana:Mulai server di kedua sisi dan presto ... semacam. Sementara semua hal termasuk KDE bleep sekarang dilakukan, pemutaran browser flash tergagap. Namun, di bawah lingkungan desktop lain (sebenarnya, hanya manajer jendela, fvwm) itu baik-baik saja.
Saya suka KDE tetapi bisa hidup tanpa bleep, jadi untuk sekarang saya akan tetap menggunakan koneksi langsung.
Penyelesaian masalah
Jika Anda memiliki masalah, menggunakan
pulseaudio -vvvv --log-level=debug
pada pi menyediakan banyak pesan debug. Awalnya ketika saya tidak bisa mendapatkan suara pada pi ini melaporkan masalah "terkait dengan bug pada driver bcm2835 ALSA" yang tampak aneh bagi saya karena suara itu baik-baik saja dengan hanya alsa, dan saya yakin ada perangkat lunak pi di sekitar yang tergantung pada pulseaudio -apt-get remove pulseaudio
dan instal ulangapt-get install pulseaudio
sepertinya memperbaiki ini ... Bukan solusi yang saya suka lihat, tapi hei, setidaknya sekarang saya bisa mendengarkan tish tanpa harus mencolokkan speaker ke setiap kotak. Kebanyakan.sumber