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