Android編譯Lame庫(Mp3編解碼庫)
阿新 • • 發佈:2020-11-24
一、概述
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就算是結束了。