42 votes

Comment encoder un WAV en mp3 sur un appareil Android

J'ai simplifié ma question et offert une prime : Quelles sont les options disponibles pour compresser des données audio PCM brutes en mp3 sur un appareil Android.

Mon message original : Je crée un synthétiseur sur mon téléphone Android, et je génère des données PCM à envoyer aux haut-parleurs. Maintenant je me demande si je peux encoder ces données PCM en mp3 pour les sauvegarder sur la sdcard. Les Enregistreur de médias peut encoder l'audio provenant du microphone dans différents formats, mais ne permet pas l'encodage à partir de données audio générées par un programme.

Ma question est donc la suivante : existe-t-il une API Android standard pour l'encodage audio ? Si ce n'est pas le cas, quelles sont les solutions basées sur Java ou NDK ? Et pouvez-vous recommander l'une d'entre elles ?

Si ce n'est pas le cas, il me suffira de sauvegarder le son généré sous forme de fichier WAV, ce que je peux facilement faire.

31voto

Mondain Points 5200

Java pur
Regardez l'implémentation de javasound en salle blanche de Tritonus, qui offre une fonction de Encodeur MP3 plugin ici : http://www.tritonus.org/plugins.html
Deuxièmement, je suggérerais d'examiner les bibliothèques JLayer ou JLayerME de jzoom : http://www.javazoom.net/javalayer/javalayer.html (il se peut que ce ne soit que du décodage, je n'en suis pas sûr)
Si cela ne répond pas à vos besoins, vous pouvez consulter cet article datant de 2000 sur l'ajout de capacités MP3 à J2SE (avec la source) : http://www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3.html

Voie indigène
Si vous voulez des performances "natives", j'envisagerais un portage FFmpeg ou Lame pour Android. Lame : http://lame.sourceforge.net/

9voto

NagyI Points 1243

Pour autant que je sache, vous ne pouvez pas faire cela en utilisant uniquement les outils du SDK. D'après le guide officiel du développeur, il n'y a pas d'encodeur MP3 dans la plateforme ( Formats de médias pris en charge par Android ), vous devez donc porter un encodeur par vous-même en utilisant le NDK, puis écrire un code d'encapsulation pour recevoir les échantillons audio par l'intermédiaire de JNI.

Je travaille actuellement sur le portage de certains décodeurs audio du projet Rockbox pour mon propre lecteur de musique, et il peut enregistrer de l'audio en MP3, donc vous devriez peut-être essayer de regarder dans sa source et trouver la bibliothèque de l'encodeur. La plupart des décodeurs ont des optimisations ARM qui accélèrent les choses de façon notable, donc je suppose que certains encodeurs ont aussi cet ajout.

1voto

Mohit Chauhan Points 400

L'encodeur Mp3 n'est pas disponible dans Android. Vous devez compiler libav avec la librairie mp3 lame, vous pouvez trouver le code à partir de http://libavandroid.wordpress.com

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X