Lame MP3 Encoder compile for Android

I want to compile the lame encoder for Android. How can I find the tutorials for Lame and its compiling for Android platform.

Thanks,


There used to be a good blog post on how to compile lame for Android, but for some reason it's been offline for a while and only available on some dodgy Chinese sites.

I'll just copy the content below:

porting compiling lame encoder to Android ARM arch using Android NDK

I was looking for a mp3 encoding application in Android Market, and found very few, the reason I think Android doesn't support mp3 encoding is because mp3 is patented technology. Another reason is I guess people prefer Java programming and Android SDK rather than Android native development kit.

Nevertheless compiling libmp3lame library for Android using Android NDK is very easy actually.

  • download Android NDK(also you need Android SDK and Eclipse with ADT plugin) and create simple project.
  • create directory called "jni" in your project's directory.
  • download lame sources, extract, copy all sources from directory libmp3lame to jni directory. Also copy lame.h which is located in include directory of lame sources.
  • create jni/Android.mk file. it should look like this:
  • 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)
  • clean lame sources, remove what's left from GNU autotools, Makefile.am , Makefile.in , libmp3lame_vc8.vcproj , logoe.ico , depcomp , folders i386 , vector .
  • edit file jni/utils.h , and replace definition extern ieee754_float32_t fast_log2(ieee754_float32_t x); with this extern float fast_log2(float x);
  • go to the root directory of your Android project and run $pathtoandroidndk/ndk-build and you're done, you'll have limp3lame.so compiled.
  • Also, the following question on SO might be of interest for you, as it deals with some issues after compiling lame for Android:

  • Invoking native functions of ported library

  • The above solution worked for me except:

  • don't delete the vector directory from the source directory
  • you can get rid of the compile warnings by adding a compiler flag: LOCAL_CFLAGS = -DSTDC_HEADERS
  • 链接地址: http://www.djcxy.com/p/96804.html

    上一篇: Android使用jaudiotagger

    下一篇: Lame MP3编码器为Android编译