本文主要是介绍java libmp3lame_Android编译Lame库(Mp3编解码库),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、概述
Lame是目前最好的mp3编解码工具。
特点:音质好,压缩比比较高,被大量软件和硬件支持,应用广泛。
所以储备一下mp3的编解码知识还是很有必要的
二、编译示例
继上一节中新建的demo开始讲解:
1.下载lame源代码:下载
2.解压代码并把lame-3.99.5文件下,libmp3lame和include文件夹下的.c和.h文件都copy到cpp/lame文件夹下。
3.对源码进行修改
a.删除 fft.c 文件的 47 行的 include“vector/lame_intrin.h”
b.修改 set_get.h 文件的 24 行的 #include“lame.h”
c.将 util.h 文件的 574 行的”extern ieee754_float32_t fast_log2(ieee754_float32_t x);” 替换为 “extern float fast_log2(float x);”
3.修改CMakeLists.txt文件
#生成动态共享库
add_library( # 设置编译成so库的名称
native-lib
# 生成动态库或共享库,此处如果SHARED改为STATIC,其含义是生成静态库
SHARED
# 提供一个需要编译的源文件的相对路径(),native-lib.cpp就是需要编译的源文件
native-lib.cpp
lame/bitstream.c
lame/encoder.c
lame/fft.c
lame/gain_analysis.c
lame/id3tag.c
lame/lame.c
lame/mpglib_interface.c
lame/newmdct.c
lame/presets.c
lame/psymodel.c
lame/quantize.c
lame/quantize_pvt.c
lame/reservoir.c
lame/set_get.c
lame/tables.c
lame/takehiro.c
lame/util.c
lame/vbrquantize.c
lame/VbrTag.c
lame/version.c
)
4.修改app文件夹下的build.gradle文件
5.修改native-lib.cpp文件打印lame的版本号
extern "C"jstring
Java_com_yw_lamedemo_MainActivity_stringFromJNI(
JNIEnv*env,
jobject/*this*/) {
std::string hello = "Hello from C++";//此处输出lame的版本号
return env->NewStringUTF(get_lame_version());
}//此处仅仅是输出了lame的版本号,如果需要其他的新加的功能可以自己添加对应的功能
6.执行make project 编译后的so库会放到cpp/libs文件夹下
7.到此编译lame就算是结束了。GitHub
这篇关于java libmp3lame_Android编译Lame库(Mp3编解码库)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!