2011-12-26 12 views

Odpowiedz

32

Kiedyś być dobrym blog post na jak skompilować lame dla Androida, ale z jakiegoś powodu to był nieaktywny przez chwilę i dostępne tylko w niektórych podejrzanych chińskich witryn.

Ja po prostu skopiuj poniższy zawartość:

Porting kompilacji LAME Android ARM łuku przy użyciu Android NDK

Szukałem aplikacji kodowania mp3 w Android Market, a Znalazłem bardzo mało, dlatego myślę, że Android nie obsługuje kodowania mp3 , ponieważ mp3 jest opatentowaną technologią. Kolejny powód to I , sądzę, że ludzie wolą programowanie w języku Java i zestaw SDK Androida niż Zestaw do samodzielnego programowania Android.

Mimo to kompilowanie biblioteki libmp3lame dla Androida przy użyciu Androida NDK jest bardzo proste.

  1. pobierz Android NDK (również potrzebujesz Androida SDK i Eclipse z wtyczką ADT) i utwórz prosty projekt.
  2. utwórz katalog o nazwie "jni" w katalogu projektu.
  3. pobierz lame źródła, rozpakuj, skopiuj wszystkie źródła z katalogu libmp3lame do katalogu jni. Skopiuj także lame.h, który znajduje się w katalogu include lame sources.
  4. utwórz plik jni/Android.mk. powinno to wyglądać tak:
    • LOCAL_PATH := $(call my-dir)
    • include $(CLEAR_VARS)
    • LOCAL_MODULE := mp3lame
    • LOCAL_SRC_FILES := bitstream.c fft.c id3tag.c mpglib_interface.c presets.c quantize.c reservoir.c tables.c util.c VbrTag.c encoder.c gain_analysis.c lame.c newmdct.c psymodel.c quantize_pvt.c set_get.c takehiro.c vbrquantize.c version.c
    • include $(BUILD_SHARED_LIBRARY)
  5. czystych źródeł lame, usunąć to, co pozostało z autotools GNU, Makefile.am, Makefile.in, libmp3lame_vc8.vcproj , logoe.ico, depcomp, foldery i386, vector.
  6. edytować plik jni/utils.h i zastąpić definicję extern ieee754_float32_t fast_log2(ieee754_float32_t x); z tym extern float fast_log2(float x);
  7. przejść do głównego katalogu projektu Android i uruchom $pathtoandroidndk/ndk-build i skończysz, będziesz miał limp3lame.so skompilowany.

Również następujące pytanie na SO mogą być interesujące dla Ciebie, ponieważ dotyczy niektórych problemów po kompilacji lame dla Androida:

+1

1. Nie usuwaj floder wektorowych; 2. Niektóre źródła zawierają lame.h używając "lame.h" niektóre źródła używając , więc musisz dodać -I./ flags w Android.mk –

+0

Jak skompilować to jako statyczną bibliotekę, która może być używana z ffmpeg? – frankish

9

Powyższe rozwiązanie pracował dla mnie z wyjątkiem:

  • nie usuwaj vector katalogu z katalogu źródłowego
  • można pozbyć się ostrzeżenia kompilacji dodając flagi kompilatora: LOCAL_CFLAGS = -DSTDC_HEADERS
Powiązane problemy