zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    组合容斥计数技巧
    [BZOJ3456]城市规划:DP+NTT+多项式求逆
    [BZOJ4456][ZJOI2016]旅行者:分治+最短路
    [51nod1383&1048]整数分解为2的幂:DP
    [BZO3572][HNOI2014]世界树:虚树+倍增
    树上最小权链覆盖:可并堆
    [BZOJ4237]稻草人:CDQ分治+单调栈
    [BZOJ3453]tyvj 1858 XLkxc:拉格朗日插值
    [BZOJ5463][APIO2018]铁人两项:Tarjan+圆方树
    [BZOJ4695]最假女选手:segment tree beats!
  • 原文地址:https://www.cnblogs.com/tony-yang-flutter/p/14030561.html
Copyright © 2011-2022 走看看