Lame MP3 Encoder编译为Android

时间:2011-12-26 04:04:29

标签: android audio mp3

我想为Android编译lame编码器。我怎样才能找到Lame的教程及其针对Android平台的编译。

谢谢,

2 个答案:

答案 0 :(得分:32)

曾经有一个很好的blog post关于如何编译Android的跛脚,但由于某种原因,它已经离线一段时间,只在一些狡猾的中国网站上可用。

我只想复制以下内容:

  

使用Android NDK移植编译lame编码器到Android ARM arch

     

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

     

然而,使用Android为Android编译libmp3lame库   NDK实际上很容易。

     
      
  1. 下载Android NDK(您还需要Android SDK和带ADT插件的Eclipse)并创建简单项目。
  2.   
  3. 在项目目录中创建名为“jni”的目录。
  4.   
  5. 下载lame源,解压缩,将目录libmp3lame中的所有源复制到jni目录。同时复制lame.h,它位于lame sources的include目录中。
  6.   
  7. 创建jni / Android.mk文件。它应该是这样的:
  8.   
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)
  
      
  1. 清除蹩脚的来源,删除GNU自动工具中遗留的内容,Makefile.amMakefile.inlibmp3lame_vc8.vcprojlogoe.icodepcomp,文件夹i386vector
  2.   
  3. 编辑文件jni/utils.h,并替换定义extern ieee754_float32_t fast_log2(ieee754_float32_t x);   使用此extern float fast_log2(float x);
  4.   
  5. 转到Android项目的根目录并运行$pathtoandroidndk/ndk-build并完成后,您将编译limp3lame.so
  6.   

此外,关于SO的以下问题可能对您有意义,因为它在为Android编译跛脚后处理一些问题:

答案 1 :(得分:9)

上述解决方案对我有用,除了:

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