para ndk mejorar latencia eliminar developer java android audio mobile

java - ndk - mejorar latencia audio android



¿Api de audio de baja latencia para Android? (4)

¿Cuáles son mis opciones para reproducir audio simultáneo en un dispositivo Android con la menor cantidad de latencia? ¿Voy a obtener algo medio decente del SDK enlatado, o es demasiado pedir? La documentación afirma que la clase SoundPool es capaz de reproducir múltiples sonidos simultáneamente con un rendimiento relativamente bueno, pero después de ejecutar algunas pruebas en el emulador y en un dispositivo físico parece bastante débil. ¿Hay algún truco o tengo que ir a una API de nivel mucho más bajo para este tipo de cosas? Intenté usar un único grupo de sonido con múltiples muestras cargadas, y probé varios grupos de sonido, cada uno de los cuales administraba una sola muestra. Estoy precargando todo, por lo que cuando intento reproducir no tengo ningún código adicional que se ejecute aparte de la llamada a SoundPool.play ().


Android 2.3 ahora es compatible con el acceso nativo a las API de audio (a través de OpenSL) para aplicaciones de baja latencia.

Sin embargo, no todos los dispositivos de hardware tendrán un perfil de características de audio de baja latencia. Por lo tanto, las aplicaciones que requieren dispositivos de filtro shouuld de audio de baja latencia no lo admiten en el mercado de Android al especificar lo siguiente en el manifiesto:

<uses-feature android:name="android.hardware.audio.low_latency"/>


No tengo ninguna experiencia con Android, pero he escrito cosas similares para Windows Mobile. Los dispositivos en sí son ciertamente capaces de mezclar múltiples sonidos en tiempo real con una baja latencia (menos de 25 ms), aunque por "múltiple" me refiero a 4 o 5 (y no a 30 a 40). Sin embargo, solo pude lograr esto satisfactoriamente al escribir mi propio código que mezclaba internamente y accedía a la API de reproducción de audio de bajo nivel solo para reproducir la salida final mixta. Las formas de tocar sonidos de alto nivel en .Net Compact Framework son teóricamente capaces de polifonía, pero en la práctica funcionan de forma horrible (muchos problemas técnicos, tartamudeo y distorsión).

Sospecho que el SDK de audio de Android tiene el mismo problema, por lo que puede que tengas que escribir el tuyo.


Por favor, mira mi respuesta a Android: sonido API (determinista, baja latencia) .

La latencia de un dispositivo Android depende menos de la API y más del hardware y los controladores para ese dispositivo en particular. La habilitación de la reproducción de baja latencia consume más energía y aumenta las posibilidades de problemas técnicos de audio, por lo que muchos fabricantes de equipos originales ampliarán sus almacenamientos intermedios de reproducción de forma intencionada.


Varias personas están interesadas en audio de baja latencia en Andriod. Aquí están los hilos que estoy siguiendo sobre el tema:

  • Una wave cubre temas relacionados con el audio de la conferencia de E / S de este año.
  • Un issue Android sobre soporte para audio de baja latencia en el NDK.

Esta post sugiere que los dispositivos Android tienen controladores ALSA (capaces de audio de baja latencia), pero parece que la funcionalidad de baja latencia no está expuesta a las aplicaciones a través del NDK.

No tengo experiencia directa con Android, pero por lo que he leído, la baja latencia (menos de <10ms o menos) todavía no es una realidad. Por favor, publique cualquier experiencia que indique lo contrario.