我想为Android编译lame编码器。我怎样才能找到Lame的教程及其针对Android平台的编译。
谢谢,
答案 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实际上很容易。
- 下载Android NDK(您还需要Android SDK和带ADT插件的Eclipse)并创建简单项目。
- 在项目目录中创建名为“jni”的目录。
- 下载lame源,解压缩,将目录libmp3lame中的所有源复制到jni目录。同时复制lame.h,它位于lame sources的include目录中。
- 创建jni / 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)
- 清除蹩脚的来源,删除GNU自动工具中遗留的内容,
Makefile.am
,Makefile.in
,libmp3lame_vc8.vcproj
,logoe.ico
,depcomp
,文件夹i386
,vector
。- 编辑文件
jni/utils.h
,并替换定义extern ieee754_float32_t fast_log2(ieee754_float32_t x);
使用此extern float fast_log2(float x);
- 转到Android项目的根目录并运行
醇>$pathtoandroidndk/ndk-build
并完成后,您将编译limp3lame.so
。
此外,关于SO的以下问题可能对您有意义,因为它在为Android编译跛脚后处理一些问题:
答案 1 :(得分:9)
上述解决方案对我有用,除了:
vector
目录
LOCAL_CFLAGS = -DSTDC_HEADERS