2011-12-07 36 views
7

Problema:Come utilizzare l'audio Android con bassa latenza

Come si potrebbe avere sentito, Android non fornisce a bassa latenza audio API. Ciò che intendo per audio a bassa latenza è che dovresti essere in grado di ottenere segnali audio dal microfono e riprodurre il suono senza molto tempo intermedio (ad esempio, 5-7 ms)

Ho provato il vecchio java (con AudioRecord e AudioTrack) e "nuovo" OpenSL ES. Sono terribili e rendono l'app inutilizzabile. The issue was well documented here. BTW, l'API iOS può produrre una latenza di circa 5-7 ms.

cerca di soluzioni alternative:

Ma sto cercando di fare l'audio a bassa latenza in ogni caso. Something like this answer describes.

"Tuttavia, sono stato in grado di raggiungere questo obiettivo in modo soddisfacente, scrivendo il mio proprio codice che ha fatto il miscelazione solo internamente e accessibile l'API di riproduzione audio a basso livello solo per giocare l'uscita mista finale. Il alto -migliori modi di suonare i suoni nel .Net Compact Framework sono teoricamente capaci di polifonia, ma in pratica funzionano orribilmente (un sacco di problemi tecnici, balbuzie e distorsioni). "

Questo ha senso per Android? An answer is discouraging.

Quindi la mia domanda. Non c'è davvero alcun modo per ottenere una latenza audio di 10 ms con Android?

Per essere onesti, non mi aspetto una soluzione tra qualche tempo, ma vorrei solo che una grande mente abbia una risposta a questo problema.

risposta

3

Attualmente non c'è modo di ottenere audio a bassa latenza sui dispositivi Android senza modificare il sistema operativo, e anche in questo caso la latenza può derivare dall'implementazione hardware, quindi il software non può risolverlo. Questo è triste dal momento che il kernel di Linux è molto capace di latenza audio di < 5ms, e molto hardware ARM è in grado di avere una latenza decente. Avevo una custom Linux build running on an old Palm TX e in realtà avevo una latenza abbastanza decente.

4

android 4.1+ ha una bassa audio api con latenza che dovrebbe darvi una latenza inferiore a 10 ms. tuttavia il valore varia in base all'hardware (benvenuto nel ricco mondo vario di Android).

anche il descrittore di funzione "android.hardware.audio.low_latency" può essere utilizzato per filtrare dispositivi privi di supporto a bassa latenza.

check out http://www.youtube.com/watch?v=Yc8YrVc47TI&feature=player_de%20tailpage#t=1366s

e questo: http://createdigitalmusic.com/2012/07/android-high-performance-audio-in-4-1-and-what-it-means-plus-libpd-goodness-today/

3

come seguire la caratteristica di android.hardware.audio.pro a partire dal 6 Android promesse < 20ms tempi di round trip, che possiamo sperare di dire < 10ms a senso unico.

Problemi correlati