Decodificación de datos de audio codificados (MP3, etc) en Android sin reproducirlo

Versión corta: ¿Cuál es la mejor manera de obtener datos codificados en un MP3 (e idealmente en un AAC / Ogg / WMA) en una matriz Java o ByteBuffer que luego pueda manipular?

Estoy elaborando un programa que ha ralentizado y acelerar los archivos de sonido como una de sus características. Esto funciona bien para los archivos WAV, que son una cabecera más los datos binarios exactos que deben ser enviados al altavoz, y ahora tengo que implementar para MP3 (idealmente, esto también apoyaría AAC, Ogg y WMA, pero desde Estos son formatos menos populares esto no es necesario). Android no expone una interfaz para decodificar el MP3 sin reproducirlo, por lo que necesito crear esa interfaz.

Tres opciones se presentan, aunque estoy abierto a otros:

1) Escriba mi propio decodificador. Ya tengo un detector de marco funcional que esperaba utilizar para la opción (3), y ahora solo debería implementar las tablas de decodificación de Huffman.

2) Utilice JLayer, o una biblioteca equivalente de Java, para manejar la decodificación. No estoy totalmente claro en cuáles son las ramificaciones de la licencia aquí.

3) Conéctese a la biblioteca libmedia / MediaPlayerService. Esto es lo que hace SoundPool, y la cantidad de uso de ese servicio me hace creer que aunque es oficialmente inestable, esa implementación no va a ninguna parte. Esto significa escribir código JNI para conectarse al servicio, pero estoy descubriendo que eso es un profundo agujero de conejo. En la superficie, estoy teniendo problemas con la plantilla sp <>.

Lo hice con libmad y el NDK. JLayer es una forma de lento y el marco de los medios de comunicación es un objetivo en movimiento. Puede encontrar información y código fuente en http://apistudios.com/hosted/marzec/badlogic/wordpress/?p=231

No lo he probado, pero mp3transform es LGPL.

  • Cómo decodificar MP3 en Android dentro de la aplicación?
  • Archivo de selección de archivos de Android
  • El archivo Mp3 no se reproduce después de convertir desde byte android
  • AudioTrack - matriz corta a la distorsión de la matriz del byte usando jlayer (decodificador del java mp3)
  • Cómo mezclar / superponer dos archivos de audio mp3 en un archivo mp3 (no concatenar)
  • Los archivos OGG no se enlazarán correctamente usando Android usando MediaPlayer
  • ExoPlayer y comandos start / pause / seekTo
  • Lame MP3 Encoder compilar para Android
  • ¿Cómo puedo convertir audio .mp3 a .m4a mediante programación en android
  • Convertir archivos pcm a mp3 usando liblame en android
  • Transmisión de audio con Android MediaPlayer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.