FK~

Moje odkazy

Ostatní odkazy

EFF: svoboda blogování
Close Windows
Nenajdete mě na Facebooku ani Twitteru
Rozpad EU
Jsem členem FSF
Jsem členem EFF
There Is No Cloud …just other people's computers.

Přenos zvuku po síti (PulseAudio)

vydáno: 14. 9. 2009 22:11, aktualizováno: 12. 12. 2013 17:39

Přenášet v 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

PulseAudio je zvukový server pro POSIXové systémy (a Windows). V současných 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:

  • Server – počítač, ke kterému jsou připojené reproduktory a na kterém chceme přehrávat zvuk.
  • Klient – počítač, který bude zdrojem zvuku, máme tu např. MP3 nebo filmy, zde spustíme přehrávač.
  • Cookie – soubor obsahující nějaká data – slouží jako klíč, kterým se klient prokazuje serveru (aby nám tam někdo neoprávěný nepřehrával zvuky).

V následujícím návodu budeme předpokládat, že PulseAudio běží jako uživatelský proces (ne systémový démon).

Ruční zprovoznění síťového zvuku

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]

Komentáře čtenářů


Iggy, 28. 10. 2009 16:46, Terminologie [odpovědět]

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!!!


Iggy, 28. 10. 2009 16:54, Omluva [odpovědět]

Sorry, nepochopení konceptu - web PulseAudio vše objasnil... Více klientů = více zdrojů, z kterých může server mixovat výsledný zvuk.


xkucf03, 29. 10. 2009 00:29, Opačně [odpovědět]

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.


Cigydd, 12. 9. 2010 02:25, Chybička se vloudila [odpovědět]

[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.


xkucf03, 12. 9. 2010 10:31, Vypadá to, že se trochu [odpovědět]
Vypadá to, že se trochu změnila syntaxe. U mě funguje:
pulseaudio -D -L module-native-protocol-tcp

Anonym, 7. 3. 2011 14:27, pulseaudio --start -L [odpovědět]

pulseaudio --start -L module-native-protocol-tcp loopback=0 vysledek: too many arguments


xkucf03, 7. 3. 2011 21:32, Viz komentář výše (pro [odpovědět]

Viz komentář výše (pro jistotu jsem aktualizoval i text článku).


Franta, 27. 4. 2015 21:51, Linkový vstup [odpovědět]

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)

Přidat komentář

reagujete na jiný komentář (zrušit)
jméno nebo přezdívka
název příspěvku
webová stránka, blog
e-mailová adresa
nápověda: možnosti formátování
ochrana proti spamu a trollům

Náhled komentáře