2010-09-04 20 views
39

He simplificado mi pregunta y ofrecí una recompensa: ¿Qué opciones hay para comprimir datos de audio PCM en bruto a un mp3 en un dispositivo Android.Cómo codificar un WAV a un mp3 en un dispositivo Android

Mi post original: Estoy creando un sintetizador en mi teléfono Android, y he estado generando datos 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.

Así que mi pregunta es, ¿existe una API de Android estándar para la codificación de 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 que puedo hacer fácilmente.

+0

"Así que mi pregunta es, ¿hay una API estándar de Android para la codificación de audio ? " -- no. Volveré a etiquetar tu pregunta con la etiqueta 'java' para intentar ayudarte a obtener información ... – CommonsWare

+0

Gracias CommonsWare. – bramp

+6

FYI: La tecnología MP3 está patentada, por lo que incluirla dentro de una aplicación comercial lo expondrá a una potencial demanda. Su mejor defensa contra esto es no tener éxito con su producto. :) – MusiGenesis

Respuesta

31

Java puro
Mira en la implementación de sala limpia de Tritonus de JavaSound que ofrece una MP3 codificador plug-in aquí: http://www.tritonus.org/plugins.html
En segundo lugar, sugeriría mirar en las bibliotecas de jzoom JLayer o JLayerME: http://www.javazoom.net/javalayer/javalayer.html (esto puede solo decodifique, no estoy seguro)
Si no se ajusta a sus necesidades, puede consultar este artículo de 2000 sobre cómo agregar capacidades de MP3 a J2SE (con fuente): http://www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3.html

ruta nativa
Si desea rendimiento "nativo" Me gustaría ver un FFmpeg o puerto cojo para Android. Lame: http://lame.sourceforge.net/

+1

Hola, estoy grabando audio con AudioRecorder en Android y el formato de salida resultante es WAV. La salida tiene un tamaño muy grande para registros de 1 minuto ex toman hasta 2mb de tamaño. ¿Puedo reducir el tamaño mientras hago la conversión a mp3 usando tritonus jars? cómo implementar Tritonus en Android. por favor, ayúdame. –

9

Por lo que sé, no puede hacer esto solo con las herramientas del SDK. De acuerdo con la guía oficial del desarrollador, no hay un codificador de MP3 en la plataforma (Android Supported Media Formats), por lo que debe portar un codificador por su cuenta con 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 buscar 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.

Cuestiones relacionadas