1. 程式人生 > 實用技巧 >Android編譯Lame庫(Mp3編解碼庫)

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就算是結束了。