AudioTrack, SoundPool o MediaPlayer ¿Qué debo usar?

Necesito reproducir varios archivos de audio, con diferentes duración, como 5 a 30 segundos. Y quiero configurar el volumen independientemente para el canal derecho / izquierdo y también para aplicar efectos, como reverberación o distorsión. Entonces, ¿qué API debo usar?

Además, no puedo encontrar doc doc en AudioTrack API. ¿Sabes dónde puedo encontrar ejemplos? Gracias.

La piscina de sonido es en realidad mezclador de audio. Puede reproducir clips cortos, independientemente de si están codificados como ogg o mp3 o están descomprimidos. La piscina de sonido siempre los almacena en memoria sin comprimir, y debe saber que el límite es de 1 MB. Si su clip es demasiado grande en la memoria, la piscina de sonido se quedará en silencio y encontrará el siguiente error: "AudioFlinger no pudo crear la pista. Status: -12" El reproductor multimedia reproduce la secuencia y la decodifica en tiempo real. Por lo tanto, puede reproducir clips mucho más largos pero necesita poder del procesador para ello.

Así que Media Player es mejor para la música de fondo, mientras que la piscina de sonido es mejor fort corto efectos de audio (clics, explosiones, bucles de sonido). Además, la piscina de sonido puede reproducir más clips simultáneamente, y tiene control de volumen y velocidad. También puede jugar bucles.

Una nota: no se puede reproducir música desde la agrupación de sonidos si el clip no está completamente cargado y descodificado. Por lo tanto, debe utilizar OnLoadCompleteListener (Android 10 o superior) para comprobarlo. Si intenta reproducir sonido antes de que se decodifique, la agrupación de sonido se silenciará.

Reproductor multimedia no sufre de estos problemas.

Yo recomendaría MediaPlayer para esa duración.

Puedes encontrar más información aquí: ¿Qué tan mala es Android SoundPool? ¿Qué alternativa usar?

Además de lo que las otras respuestas sugieren, una diferencia entre MediaPlayer y SoundPool es que en MediaPlayer, no se puede reproducir un clip de sonido cuando ya está jugando (esa característica podría ser útil especialmente en los juegos). MediaPlayer necesita que el clip termine completamente antes de que se pueda reproducir de nuevo. Creo que la información se proporciona en el sitio web oficial.

Sin embargo, SoundPool no tiene ese problema y también me di cuenta de que SoundPool reproduce audio justo cuando se llama (a veces noté un ligero retraso cuando utilicé MediaPlayer).

Creo que es (parte de) la razón por la que la gente dice que SoundPool es mejor para sonidos cortos como en los juegos. Espero que esto ayude:)

MediaPlayer no admite la configuración del volumen para canales multi-canal.

Creo que SoundPool es la única cosa que se adapte a sus necesidades aquí.

EDIT: Sí, usted necesita un SoundPool, leer esto: http://www.wiseandroid.com/post/2010/07/13/Intro-to-the-three-Android-Audio-APIs.aspx

  • Contexto dentro de un Runnable
  • Mediaplayer actualización de progreso a seekbar no suave?
  • Aplicación de streaming de radio en línea para Android
  • Error de MediaPlayer de Android: Error de MediaPlayer (1, -2147483648) en Stream de Internet
  • ¿Cómo puedo enviar un archivo pregrabado (wav) durante una llamada de voz?
  • Reproductor de video nativo de Android con subtítulos
  • MediaPlayer.setDataSource falla en el archivo de audio AMR
  • VideoView no reproduce vídeo en bucle solo en Galaxy s4
  • Android: MediaPlayer, ¿Cómo obtener las propiedades de un flujo de audio?
  • Grabar audio con MediaRecorder y reproducir simultaniosamente con MediaPlayer
  • ¿Cuál es la mejor manera de obtener una duración de archivo de audio en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.