我想为Android编译跛脚编码器.我怎样才能找到Lame及其Android平台编译的教程.
谢谢,
解决方法:
曾经有一个很好的blog post如何为Android编译跛脚,但由于某种原因,它已经离线一段时间,只在一些狡猾的中国网站上可用.
我只想复制以下内容:
porting compiling lame encoder to Android ARM arch using Android NDK
I was looking for a mp3 encoding application in Android Market,
and found very few, the reason I think Android doesn’t support mp3
encoding is because mp3 is patented technology. Another reason is I
guess people prefer Java programming and Android SDK rather than
Android native development kit.Nevertheless compiling libmp3lame library for Android using Android
NDK is very easy actually.
- download Android NDK(also you need Android SDK and Eclipse with ADT plugin) and create simple project.
- create directory called “jni” in your project’s directory.
- download lame sources, extract, copy all sources from directory libmp3lame to jni directory. Also copy lame.h which is located in include directory of lame sources.
- create jni/Android.mk file. it should look like this:
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)
- clean lame sources, remove what’s left from GNU autotools,
Makefile.am
,Makefile.in
,libmp3lame_vc8.vcproj
,logoe.ico
,depcomp
, foldersi386
,vector
.- edit file
jni/utils.h
, and replace definitionextern ieee754_float32_t fast_log2(ieee754_float32_t x);
with thisextern float fast_log2(float x);
- go to the root directory of your Android project and run
$pathtoandroidndk/ndk-build
and you’re done, you’ll havelimp3lame.so
compiled.
此外,关于SO的以下问题可能对您感兴趣,因为它在为Android编译跛脚后处理一些问题:
> Invoking native functions of ported library