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.

4 Solutions collect form web for “AudioTrack, SoundPool o MediaPlayer ¿Qué debo usar?”

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

  • Reproductor multimedia de Android juega en el fondo, pero no se detiene cuando se mata la aplicación
  • Interferencias de AudioManager MODE_IN_CALL
  • Transmisión de audio con Android MediaPlayer
  • Comunicación entre servicio y actividad en una aplicación android mediaplayer
  • Java.lang.RuntimeException: No se puede inicializar el motor Visualizer, error: -4
  • Android - QCMediaPlayer mediaplayer NO está presente - no puede reproducir sonido en absoluto
  • Android MediaPlayer devuelve el error (1, -1004) al intentar reproducir algunos flujos
  • Uso de SurfaceTexture en Android
  • ¿Cómo detener MediaPlayer corriente y luego reiniciarlo? Androide
  • Cómo utilizar el archivo webvtt con MediaPlayer para pista de audio en Android
  • Subtítulos / Soporte de subtítulos en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.