Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Kryštof 21. 03. 2014, 23:25:31
-
Zdravím vespolek,
řeším skript co bude posílát audio vstup z mikrofonu po síti, ale narazil jsem hned na začátku.
Když zkusím na svém ntb (Lenovo S300, Debian) jenom na zkoušku něco jako arecord | aplay
tak výsledkem toho je, že výstup z reproduktorů je asi o 500-1000 ms opožděn.
To samé na cílovém zařízení (OpenWrt router). cat /dev/dsp > /dev/dsp
Nezmění se to ani když to pomocí netcat (přes UDP) pošlu z routeru do pc. Prodleva je prakticky beze změny.
To mě vede k myšlence že problém bude někde v přehrávání.(Velikost bufferu??? Něco na ten způsob)
Moc si nevím rady. Možná to není problém přehrávání ale nahrávání. Jsem v tomhle ještě docela lama.
Děkuju za všechny rady-návrhy-řešení-whatever.
-
V tom prvním případu máš latenci:
1. v nahrávacím bufferu alokovaném arecord
2. v rouře, než se spustí aplay
3. v přehrávacím bufferu alokovaném aplay
V druhém případě si místo arecord/aplay dosaď modul emulace oss v alse
Pokud to navíc chceš posílat po síti, naskočí ti spoustu dalších latencí.
Můžeš arecord/aplay říct, aby použily co nejmenší buffer (parametr -B a -F), ale to propojení rourou ti stejně latenci znatelně navýší.
Pro nízkolatentní řešení slouží jackd. Umí posílat data i po síti, tam ale počítej s tím, že ti latence zase trochu naroste.
-
Děkuji za tipy, uvidím jestli to stáhnu na přijatelnou úroveň.
Jackd pro OpenWrt bohužel není a nevím jestli je v mých silách ho tam dostat a jestli vůbec bude na tomhle HW pracovat...
-
U jacku narazíš na další problém. V tvém řetězci budeš mít dvoje hodiny - v nahrávací zvukovce a přehrávací zvukovce. Jack ale jede jen podle jedněch hodin, pro výstup na druhou zvukovku budeš potřebovat adaptivní resampling - http://trac.jackaudio.org/wiki/WalkThrough/User/AlsaInOut nebo http://kokkinizita.linuxaudio.org/linuxaudio/zita-ajbridge-doc/quickguide.html . Takže další latence plus nezanedbatelná spotřeba CPU.
Pokud není mikrofon příliš daleko, volil bych raději bezdrátový analogový mikrofon (nebo line-in/line-out analogové pojítko) se zanedbatelnou latencí. Na čínských eshopech jsou za pár dolarů.