PulseAudio hálózaton át - pattog [megoldva]
Hálózaton át szeretnék lejátszani zenét egyik Linuxról a másikra. TLDR: Működget, de buffer underrun-szerűen pattog néha a hang.
Hosszan:
Ezen leírás alapján működik is TCP-n keresztül: https://gist.github.com/xarinatan/c415341ff34eab445cfb073988dcf6c1
De! Sajnos időnként van benne egy kis akadás, ami zavar. 99%-ra tippelem, hogy buffer underrun eset van amiatt, hogy nem elég sokat bufferel a protokol. (A cél gépen önmagában jól működik a PulseAudio, ha helyi fájlt játszok le például VLC-vel.) Több latency nem zavarna, mert csak zenelejátszásról van szó, nem videózásról, vagy játékról. Gondoltam csak megemelem a buffer méretét, és kalap kabát. De nem találom a paramétert sehol! Pedig esküszöm használtam a guglit!
Tudja valaki, hogyan lehetne megnövelni a puffert a szerver oldalon? Vagy van valami alternatív megoldás, ami rendesen működik?
Szerk.: A megoldás az lett, hogy elúntam a próbálgatást és csináltam egy sajátot.
Először PulseAudio modulként próbáltam, de elképesztően nehezen lehetett haladni, mert rohadt bonyolult threading modellje van, de dokumentálni elfelejtették. De annyira, hogy még a függvények headerjén sincs egy nyamvadt komment se egy csomó esetben. A vége ez lett részemről: apt remove --purge pulseaudio és telepítettem a pipewire-t.
A Pipewire megvalósítja a Jack API-t, ami régi kedvencem. Efelett megvalósítottam az audio stream faék egyszerűségű átlövését TCP felett. Az egyetlen bonyolítás, hogy az órák eltérő sebessége miatt újra kell mintavételezni a szerveren a streamet (ahogy dorsy a maga kedves stílusában rámutatott ez elkerülhető volna, de egyelőre így volt egyszerűbb megcsinálni), de erre is elő tudtam venni egy másik projektből példát, hogy hogy is kell ilyet csinálni, vannak rá nagyon jó libek. A "terméket" itt találjátok, ki van próbálva remekül működik, glitch nélkül megy órákon át is megállás és veszélyes buffer underrun nélkül: https://github.com/rizsi/TcpAudioStreamJack
Jöhet a házibuli, én kérem készültem!
- Tovább (PulseAudio hálózaton át - pattog [megoldva])