Как закодировать WAV в mp3 на Android-устройстве

Я упростил свой вопрос и предложил щедрость: какие существуют варианты сжатия звуковых данных PCM в mp3 на устройстве Android.

Мое первоначальное сообщение: я создаю синтезатор на своем Android-телефоне, и я генерирую данные PCM для отправки на колонки. Теперь мне интересно, могу ли я кодировать данные PCM в качестве mp3 для сохранения на SD-карте. Объект MediaRecorder может кодировать звук, поступающий с микрофона, в различные форматы, но не позволяет кодировать из программно генерируемых аудиоданных.

Поэтому мой вопрос: существует ли стандартный API Android для кодирования звука? Если нет, то какие чистые решения на базе Java или NDK существуют? И можете ли вы порекомендовать кого-нибудь из них?

В противном случае я просто должен сохранить свой сгенерированный звук в виде WAV-файла, который я могу легко сделать.

Solutions Collecting From Web of "Как закодировать WAV в mp3 на Android-устройстве"

Чистая Java
Посмотрите на чистую комнату Tritonus в javaound, которая предлагает плагин для MP3-кодировщика : http://www.tritonus.org/plugins.html
Во-вторых, я бы предложил посмотреть библиотеки jzoom JLayer или JLayerME: http://www.javazoom.net/javalayer/javalayer.html (это может быть только декодирование, не уверен)
Если вам это не подходит, вы можете посмотреть эту статью с 2000 года о добавлении возможностей MP3 в J2SE (с исходным кодом): http://www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3 .html

Собственный маршрут
Если вы хотите «родной» производительности, я бы посмотрел порт FFmpeg или Lame для Android. Хромой: http://lame.sourceforge.net/

Насколько я знаю, вы не можете сделать это, используя только инструменты в SDK. Согласно официальному руководству по разработке, на платформе ( поддерживаемых форматом носителей для Android ) нет MP3-кодировщика, поэтому вам нужно самостоятельно поместить кодер с помощью NDK, а затем написать код оболочки для получения образцов аудио через JNI.

В настоящее время я работаю над переносом некоторых аудиодекодеров из проекта Rockbox для собственного музыкального проигрывателя, и он может записывать аудио в MP3, поэтому, возможно, вам стоит попытаться изучить его источник и найти библиотеку кодировщика. У большинства декодеров есть оптимизация ARM, которая ускоряет то, что примечательно, поэтому я думаю, что некоторые из кодеров также имеют это дополнение.

Mp3-кодировщик недоступен в android.you нужно скомпилировать libav с mp3 lame lib, вы можете найти код от http://libavandroid.wordpress.com