reklama

Zpoždění v přehrávání zvuku z mikrofonu

Kryštof

Zpoždění v přehrávání zvuku z mikrofonu
« kdy: 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
Kód: [Vybrat]
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).
Kód: [Vybrat]
cat /dev/dsp > /dev/dspNezmě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.

reklama


dustin

Re:Zpoždění v přehrávání zvuku z mikrofonu
« Odpověď #1 kdy: 22. 03. 2014, 00:42:14 »
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.

Kryštof

Re:Zpoždění v přehrávání zvuku z mikrofonu
« Odpověď #2 kdy: 23. 03. 2014, 19:18:01 »
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...

dustin

Re:Zpoždění v přehrávání zvuku z mikrofonu
« Odpověď #3 kdy: 23. 03. 2014, 20:52:43 »
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ů.

 

reklama