Lame MP3编码器为Android编译

我想编译Android的跛脚编码器。 我怎样才能findLame的教程和它的Android平台编译。

谢谢,

过去有一篇关于如何为Android编译蹩脚的好博客文章 ,但由于某种原因,它已经离线了一段时间,只能在一些狡猾的中文站点上使用。

我只是复制下面的内容:

使用Android NDK将跛脚编码器移植到Android ARM arch

我在Android Market寻找一个mp3编码应用程序,发现很less,我认为Android不支持mp3编码的原因是因为mp3是专利技术。 另一个原因是我认为人们更喜欢Java编程和Android SDK而不是Android本地开发工具包。

不过编译使用Android NDK的Android的libmp3lame库实际上是非常容易的。

  1. 下载Android NDK(也需要Android SDK和带有ADT插件的Eclipse)并创build简单的项目。
  2. 在您的项目目录中创build一个名为“jni”的目录。
  3. 下载lame源文件,将目录libmp3lame中的所有源文件复制到jni目录。 还要复制lame.h的包含目录中的lame.h。
  4. 创buildjni / Android.mk文件。 它应该是这样的:
    • 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. 清理不良来源,从GNU autotools, Makefile.amMakefile.inlibmp3lame_vc8.vcprojlogoe.icodepcomp ,文件夹i386vector删除剩下的内容。
  6. 编辑文件jni/utils.h ,并replace定义extern ieee754_float32_t fast_log2(ieee754_float32_t x); 这个extern float fast_log2(float x);
  7. 去你的Android项目的根目录,并运行$pathtoandroidndk/ndk-build ,你就完成了,你会有limp3lame.so编译。

另外,关于SO的以下问题可能会对您感兴趣,因为它会在编译Android版的lame之后处理一些问题:

  • 调用移植库的本地函数

上述解决scheme为我工作,除了:

  • 不要从源目录中删除vector目录
  • 您可以通过添加一个编译器标志来摆脱编译警告: LOCAL_CFLAGS = -DSTDC_HEADERS