2011-12-07 35 views
7

Problema:Cómo utilizar audio androide con baja latencia

Como ya habrán oído, Android no proporciona la API de audio de baja latencia. Lo que quiero decir con audio de baja latencia es que usted debería poder obtener señales de audio desde el micrófono y reproducir el sonido sin mucho espacio intermedio (por ejemplo, 5-7 ms)

He intentado con Java (con AudioRecord y AudioTrack) y "nuevo" OpenSL ES. Son terribles y hacen que la aplicación no se pueda usar. The issue was well documented here. Por cierto, iOS API puede producir alrededor de 5-7 ms de latencia.

Buscando Soluciones:

Pero estoy tratando de hacer que el audio de baja latencia de todos modos. Something like this answer describes.

"Sin embargo, yo sólo era capaz de lograr esto satisfactoriamente por escribir mi propio código que hizo la mezcla interna y accede a la API de reproducción de audio de bajo nivel sólo para jugar la salida mezclada final. El mayor -Las formas de nivel de reproducción de sonidos en el .Net Compact Framework son teóricamente capaces de polifonía, pero en la práctica funcionan horriblemente (muchos problemas técnicos, tartamudeo y distorsión) ".

¿Tiene sentido para Android? An answer is discouraging.

Así que mi pregunta. ¿Realmente no hay forma de lograr una latencia de audio de 10 ms con Android?

Para ser sincero, no espero una solución en un tiempo cercano pero solo desearía que una gran mente tuviera una respuesta a este problema.

Respuesta

3

Actualmente no hay forma de obtener audio de baja latencia en dispositivos Android sin modificar el sistema operativo, e incluso entonces la latencia puede provenir de la implementación del hardware, por lo que el software no puede arreglar eso. Esto es triste ya que el kernel de Linux es muy capaz de < 5ms de latencia de audio, y mucho hardware ARM es capaz de una latencia decente. Tenía un Linux build running on an old Palm TX personalizado y que en realidad tenía una latencia bastante decente.

4

android 4.1+ tiene una api de audio de baja latencia que debería darte una latencia por debajo de 10ms. sin embargo, el valor varía según el hardware (bienvenido al rico mundo diverso de Android).

también se puede utilizar el descriptor de características de "android.hardware.audio.low_latency" para filtrar dispositivos que carecen de soporte de baja latencia.

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

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

3

como seguimiento de la función de android.hardware.audio.pro a partir de Android 6 promete < 20ms tiempos de ida y vuelta, lo que podemos esperar en el sentido de < 10 ms de una sola vía.

Cuestiones relacionadas