我想为Android编译蹩脚的编码器。如何找到 Lame 及其针对 Android 平台的编译教程。
Thanks,
曾经有一个好的博客文章 http://blog.libertadtech.com/2011/02/porting-lame-encoder-to-android-arm.html关于如何为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 源的包含目录中的 lame.h 。
- 创建 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 后的一些问题:
- 调用移植库的本机函数 https://stackoverflow.com/questions/5896464/invoking-native-functions-of-ported-library
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)