ti-enxame.com

Como codificar um WAV para um mp3 em um dispositivo Android

Simplifiquei minha pergunta e ofereci uma recompensa: Que opções existem para compactar dados de áudio PCM brutos em um mp3 em um Android dispositivo.

Minha postagem original: Estou criando um sintetizador no meu telefone Android e gerando dados PCM para enviar para os auto falantes. Agora, estou me perguntando se posso codificar esses dados do PCM como um mp3 para salvar no sdcard. O objeto MediaRecorder pode codificar o áudio proveniente do microfone em vários formatos, mas não permite a codificação a partir de dados de áudio gerados programaticamente.

Portanto, minha pergunta é: existe uma API Android padrão para codificação de áudio? Caso contrário, que soluções baseadas em Java ou NDK existem? E você pode recomendar algum deles?

Se isso não acontecer, terei que salvar meu áudio gerado como um arquivo WAV, o que posso fazer com facilidade.

40
bramp

Java puro
Veja a implementação de javasound em salas limpas da Tritonus, que oferece uma Codificador MP3 plugin aqui: http://www.tritonus.org/plugins.html
Em segundo lugar, eu sugeriria examinar as bibliotecas do jzoom JLayer ou JLayerME: http://www.javazoom.net/javalayer/javalayer.html (isso pode ser decodificado apenas, não tenho certeza)
Se isso não atender às suas necessidades, você pode ler este artigo de 2000 sobre como adicionar recursos de MP3 ao J2SE (com fonte): http://www.javaworld.com/javaworld/jw- 11-2000/jw-1103-mp3.html

Rota nativa
Se você deseja um desempenho "nativo", analiso uma porta FFmpeg ou Lame para Android. Lame: http://lame.sourceforge.net/

31
Paul Gregoire

Até onde eu sei, você não pode fazer isso usando apenas as ferramentas do SDK. De acordo com o guia oficial do desenvolvedor, não há um codificador MP3 na plataforma ( Android Supported Media Formats ), portanto, você deve portar um codificador sozinho usando o NDK e, em seguida, escrever um código de invólucro para receba as amostras de áudio através do JNI.

Atualmente, estou trabalhando na portabilidade de alguns decodificadores de áudio do projeto Rockbox para o meu próprio music player, e ele pode gravar áudio em MP3, então talvez você deva tentar procurar na fonte e encontrar a biblioteca do codificador. A maioria dos decodificadores possui otimizações ARM que acelera as coisas visíveis), então eu acho que alguns dos codificadores também têm essa adição.

9
NagyI

O codificador Mp3 não está disponível no Android. Você precisa compilar o libav com o mp3 lame lib, pode encontrar o código em http://libavandroid.wordpress.com

1
Mohit Chauhan