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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM