【发布时间】:2012-01-27 19:17:46
【问题描述】:
我想为 Android 编译 lame 编码器。我怎样才能找到 Lame 的教程及其在 Android 平台上的编译。
谢谢,
【问题讨论】:
我想为 Android 编译 lame 编码器。我怎样才能找到 Lame 的教程及其在 Android 平台上的编译。
谢谢,
【问题讨论】:
以前有一个很好的blog post关于如何为Android编译lame,但由于某种原因它已经离线了一段时间,并且只在一些狡猾的中国网站上可用。
我将复制以下内容:
使用 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 源的 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 编译 lame 后处理了一些问题:
【讨论】:
上述解决方案对我有用,除了:
vector目录LOCAL_CFLAGS = -DSTDC_HEADERS
【讨论】: