Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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