Cómo utilizar audio de Android con baja latencia

Problema:

Como habrás escuchado, Android no proporciona API de audio de baja latencia. Lo que quiero decir con audio de baja latencia es que usted debería ser capaz de obtener señales de audio del micrófono y reproducir el sonido sin mucho intervalo de tiempo entre (por ejemplo, 5-7 ms)

He intentado viejo java (con AudioRecord y AudioTrack) y "nuevo" OpenSL ES. Son terribles y hacen que la aplicación sea inutilizable. El tema estaba bien documentado aquí. BTW, la API de iOS puede producir latencia de 5-7 ms.

Buscando soluciones:

Pero estoy tratando de hacer el audio de baja latencia de todos modos. Algo como esta respuesta describe.

"Sin embargo, sólo pude lograr esto satisfactoriamente escribiendo mi propio código que hacía la mezcla internamente y accedía a la API de reproducción de audio de bajo nivel sólo para reproducir la salida mixta final. Compact Framework son teóricamente capaces de polifonía, pero en la práctica funcionan horriblemente (muchos problemas, tartamudeo y distorsión) ".

¿Tiene sentido para Android? Una respuesta es desalentadora.

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

Para ser honesto, no estoy esperando una solución en algún tiempo pronto, pero sólo deseo una gran mente tienen respuesta a este problema.

Actualmente no hay forma de obtener audio de baja latencia en los dispositivos Android sin modificar el sistema operativo, e incluso entonces una gran cantidad de la latencia puede venir de la implementación de hardware, por lo que el software no puede arreglarlo. Esto es triste porque el kernel de Linux es muy capaz de <5ms de latencia de audio, y mucho hardware ARM es capaz de latencia decente. Tenía una compilación de Linux personalizada ejecutándose en una antigua TX de Palm y que en realidad tenía una latencia bastante decente.

Android 4.1+ tiene api de audio de baja latencia que debería darle menos de 10ms de latencia. Sin embargo el valor varía según el hardware (bienvenido al rico y diverso mundo de android).

También se puede utilizar descriptor de función de "android.hardware.audio.low_latency" para filtrar dispositivos que carecen de soporte de baja latencia.

Visita 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/

Como seguimiento de la característica de android.hardware.audio.pro partir de Android 6 promesas <20ms ida y vuelta veces, lo que podemos esperar significa <10ms unidireccional.

  • Api de audio de baja latencia para Android?
  • Android grabación y reproducción + altavoz como una opción
  • Detectar si un auricular está conectado a un dispositivo Android o no.
  • Descifrar audio / video sobre la marcha a MediaPlayer
  • Mezclador de canciones de audio en android mediante programación
  • ¿Cómo puedo obtener información de latencia de la clase AudioTrack de Android?
  • Medidor de VU (audio) al grabar audio en Android
  • Grabar audio desde varios dispositivos internos en Android (a través de API no documentada)
  • AudioTrack: Reproducción de sonido en WiFi
  • Cómo extraer muestras de PCM de la salida del decodificador de MediaCodec
  • Cómo mezclar archivos de audio y música del archivo midi en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.