Moje odkazy
Obsah článku:
vydáno: 14. 9. 2009 22:11, aktualizováno: 18. 7. 2020 13:27
Přenášet v GNU/Linuxu obraz z jednoho počítače na druhý není žádná věda. Prostě se připojíme na vzdálený server pomocí SSH a spustíme na něm nějakou GUI aplikaci – okno se nám ukáže hezky na našem desktopu a můžeme s aplikací v klidu pracovat. Obraz bychom tedy měli, ale co zvuk? S ním nám pomůže právě PulseAudio.
PulseAudio je zvukový server pro POSIXové systémy (a Windows). V současných GNU/Linuxových distribucích se hojně používá, takže ho na počítači dost možná máte a ani o tom nevíte.
Základní pojmy:
V následujícím návodu budeme předpokládat, že PulseAudio běží jako uživatelský proces (ne systémový démon).
Na serveru spustíme PulseAudio se síťovým modulem a povolíme nelokální spojení.
(všechny příkazy spouštíme jako neprivilegovaný uživatel)
$ pulseaudio --kill $ pulseaudio -D -L module-native-protocol-tcp
Zkontrolujeme si, že PulseAudio skutečně naslouchá:
$ netstat -tlpn | grep 4713 tcp 0 0 0.0.0.0:4713 0.0.0.0:* LISTEN 4588/pulseaudio tcp6 0 0 :::4713 :::* LISTEN 4588/pulseaudio
(pokud používáme firewall, povolíme připojení z klienta na daný port serveru).
Zkopírujeme cookie soubor ~/.pulse-cookie
ze serveru na klienta. (Jinak bychom dostali na straně klienta chybu: Unable to connect: Access denied
.)
Na straně klienta si nastavíme proměnnou, obsahující jméno nebo IP adresu serveru:
$ export PULSE_SERVER="ip.adresa.serveru"
A to je vše. Teď si prostě na klientovi (ať už lokálně nebo přes SSH) spustíme přehrávač a zvuk uslyšíme z reproduktorů serveru. Např.:
$ vlc "Nějaký pěkný film.avi"
Další možnost je, „protunelovat“ TCP port PulseAudia ze serveru na klienta – pak nemusíme řešit firewally a nastavovat proměnnou. (Akorát musíme dát pozor, aby na klientovi neběžel PulseAudio démon, který by nám obsazoval tento port.)
$ ssh -R 4713:localhost:4713 klientský.počítač.cz
Teď už zbývá jen tenhle proces zautomatizovat a zjednodušit, ale o tom zase někdy příště…
Témata: [GNU/Linux]
Zdravím,
díky za fajn popis šikovného nástroje. Jen mě trošku mate (nikoliv Ivo ;-)) použití termínů Server a Klient - asi bych je dle popsané funkce prohodil - připojuji se klientem k serveru, kde jsou uloženy data (zvuk)... Každopádně díky za vynikající blog! Např. postřeh k Ústavě či Já, tužka!!!
Sorry, nepochopení konceptu - web PulseAudio vše objasnil... Více klientů = více zdrojů, z kterých může server mixovat výsledný zvuk.
jj, je to trochu nezvyklé – klient a server tu jsou obráceně, je to jako u X protokolu. X server nebo pulseaudio server běží obvykle na počítači, který je ze síťového hlediska klientem, zatímco program (např. přehrávač hudby) je z pohledu pulseaudia klientem, zatímco z pohledu SSH spojení je to server.
[pavel@ibm-pavel ~]$ pulseaudio --start -L module-native-protocol-tcp loopback=0
E: main.c: Too many arguments.
[pavel@ibm-pavel ~]$ pulseaudio --version
pulseaudio 0.9.21-26mdv2010.1
Mandriva Linux 2010.1 Spring Free.
Co s tím? Když vynechám "loopback=0", tak se server spustí, ale pak nic neslyším. Díky.
pulseaudio -D -L module-native-protocol-tcp
pulseaudio --start -L module-native-protocol-tcp loopback=0 vysledek: too many arguments
Viz komentář výše (pro jistotu jsem aktualizoval i text článku).
BTW: přehrávání audia z linkového vstupu (line-in):
pactl load-module module-loopback
případně ho zase vypneme:
pactl unload-module module-loopback
výpis výstupů:
pactl list sinks
aktivace ALSA výstupu:
pactl load-module module-alsa-sink
výběr výchozího výstupu:
pactl set-default-sink 2
(číslo z výpisu výše)