android如何编译lame,移植Lamemp3到Android

环境配置

为了使用在Android中使用JNI,需要配置Android NDK的环境, Android NDK 配置

设置对应的环境变量(Windows)

下载LAME

需要LAME的源文件,可以在下载官网 LAME,可能会有一些网络的问题,也可以通过百度网盘下载

网盘LAME,下载之后解压会得到LAME的源代码

创建一个 Mp3lame目录,在目录中创建一个 jni目录,目录结构如下:

Mp3lame

-jni

把解压之后的lame的目录中的libmp3lame 复制到 jni目录下,将lame中include目录中的lame.h复制到 jni/libmp3lame目录下,修改下面的文件

将 libmp3lame/util.h中的 extern ieee754_float32_t fast_log2(ieee754_float32_t x); 修改为 extern float fast_log2(float x);

将 libmp3lame/set_get.h中的 #include 修改为 #include "lame.h"

NDK 编译

创建Android.mk文件,包含需要编译的源文件,将Android.mk文件放在jni目录下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libmp3lame

LOCAL_SRC_FILES := \

./libmp3lame/bitstream.c \

./libmp3lame/encoder.c \

./libmp3lame/fft.c \

./libmp3lame/gain_analysis.c \

./libmp3lame/id3tag.c \

./libmp3lame/lame.c \

./libmp3lame/mpglib_interface.c \

./libmp3lame/newmdct.c \

./libmp3lame/presets.c \

./libmp3lame/psymodel.c \

./libmp3lame/quantize.c \

./libmp3lame/quantize_pvt.c \

./libmp3lame/reservoir.c \

./libmp3lame/set_get.c \

./libmp3lame/tables.c \

./libmp3lame/takehiro.c \

./libmp3lame/util.c \

./libmp3lame/vbrquantize.c \

./libmp3lame/VbrTag.c \

./libmp3lame/version.c \

./wrapper.c

LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

打开终端,定位到 Mp3lame目录,执行 ndk-build 就会开始编译

编译的过程中遇到的问题:

534741f5151c

编译问题

解决方案:

在Android.mk中添加一个选项

LOCAL_CFLAGS = -DSTDC_HEADERS

再重新编译

534741f5151c

编译过程

编写wrapper.c 文件

使用的是 samsung 的wrapper.c 文件,将wrapper.c文件放在 jni目录下,这个文件提供了三个native的方法

可以根据自己的需求修改

private native void initEncoder(int numChannels, int sampleRate, int bitRate, int mode, int quality);

private native void destroyEncoder();

private native int encodeFile(String sourcePath, String targetPath);

在工程中使用

static {

System.loadLibrary("mp3lame");

}

private native void initEncoder(int numChannels, int sampleRate, int bitRate, int mode, int quality);

private native void destroyEncoder();

private native int encodeFile(String sourcePath, String targetPath);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值