java - Cómo codificar un WAV a un mp3 en un dispositivo Android




encoding (2)

He simplificado mi pregunta y he ofrecido una recompensa: ¿qué opciones hay para comprimir datos de audio PCM en bruto a un mp3 en un dispositivo Android?

Mi publicación original: estoy creando un sintetizador en mi teléfono Android, y he estado generando datos de PCM para enviar a los altavoces. Ahora me pregunto si puedo codificar estos datos PCM como un mp3 para guardarlos en la tarjeta SD. El objeto MediaRecorder puede codificar audio proveniente del micrófono en varios formatos, pero no permite la codificación a partir de datos de audio generados mediante programación.

Entonces mi pregunta es, ¿hay una API estándar de Android para codificar audio? Si no, ¿qué soluciones basadas en Java puro o NDK existen? ¿Y puedes recomendar alguno de ellos?

De lo contrario, tendré que guardar mi audio generado como un archivo WAV, lo cual puedo hacer fácilmente.



Por lo que sé, no puedes hacer esto usando solo las herramientas del SDK. Según la guía oficial del desarrollador, no hay un codificador de MP3 en la plataforma ( formatos de medios admitidos por Android ), por lo que debe portar un codificador por su cuenta utilizando el NDK, luego escriba un código de envoltura para recibir las muestras de audio a través de JNI.

Actualmente estoy trabajando en portar algunos decodificadores de audio del proyecto Rockbox para mi propio reproductor de música, y puede grabar audio en MP3, así que tal vez deberías tratar de ver su fuente y encontrar la biblioteca del codificador. La mayoría de los decodificadores tienen optimizaciones de ARM que acelera cosas notables, así que supongo que algunos de los codificadores también tienen esta adición.





wav