Как закодировать WAV в mp3 на устройстве Android
Я упростил свой вопрос и предложил щедрость:
Какие существуют варианты сжатия звуковых данных PCM в mp3 на устройстве Android.
Мое первоначальное сообщение:
Я создаю синтезатор на своем телефоне Android, и я генерирую данные PCM для отправки в колонки. Теперь мне интересно, могу ли я кодировать данные PCM в качестве mp3 для сохранения на SD-карте. Объект MediaRecorder может кодировать звук, поступающий с микрофона, в различные форматы, но не позволяет кодировать из программно генерируемых аудиоданных.
Итак, мой вопрос: существует ли стандартный API Android для кодирования аудио? Если нет, то какие чистые решения на базе Java или NDK существуют? И можете ли вы порекомендовать кого-нибудь из них?
В противном случае я просто должен сохранить свой сгенерированный звук в виде WAV файла, который я легко могу сделать.
Ответы
Ответ 1
Чистая Java
Посмотрите на реализацию чистых помещений Tritonus javasound, которая предлагает плагин MP3 encoder: 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.
Lame: http://lame.sourceforge.net/
Ответ 2
Насколько я знаю, вы не можете сделать это, используя только инструменты в SDK. Согласно официальному руководству по разработке, в платформе отсутствует кодировщик MP3 (поддерживаемые Android форматы мультимедиа), поэтому вам нужно будет поместить кодировщик на ваш собственный, используя NDK, затем напишите некоторый код оболочки, чтобы получить образцы звука через JNI.
В настоящее время я работаю над переносом некоторых аудиодекодеров из проекта Rockbox для своего собственного музыкального проигрывателя, и он может записывать аудио в MP3, поэтому, возможно, вам стоит попытаться изучить его источник и найти библиотеку кодировщика. Большинство декодеров имеют оптимизацию ARM, которая ускоряет то, что примечательно, поэтому я думаю, что некоторые из кодеров также имеют это дополнение.
Ответ 3
Mp3-кодировщик недоступен в android.you нужно скомпилировать libav с mp3 lame lib, вы можете найти код из
http://libavandroid.wordpress.com