随笔 - 632  文章 - 17  评论 - 54  阅读 - 93万

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

  

posted on   飘杨......  阅读(1640)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示