Как кодировать WAV в mp3 на устройстве Android - PullRequest
40 голосов
/ 04 сентября 2010

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

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

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

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

Ответы [ 3 ]

31 голосов
/ 11 сентября 2010

Чистая Ява Посмотрите на реализацию javasound в Tritonus для чистой комнаты, которая предлагает 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/

9 голосов
/ 04 сентября 2010

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

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

1 голос
/ 04 февраля 2014

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

...