音視訊開發進階-學習筆記2-LAME交叉編譯

語言: CN / TW / HK

LAME簡介

LAME是目前非常優秀的一種MP3編碼引擎,行業內,轉碼MP3格式的音訊檔案時,LAME庫就是最常用的編碼器,當達到320Kbit/s時,LAME編碼出來的音訊質量幾乎可以和CD的音質相媲美,並且還能保證整個音訊檔案的體積非常小,因此若要在移動端平臺上編碼MP3檔案,使用LAME便成為唯一的選擇。

LAME下載地址

注意: 《音視訊開發進階》書中用的是3.99.5版本的,

通過指令碼,讓LAME支援iOS平臺

./configure \
--disable-shared \
--disable-frontend \
--host=arm-apple-darwin \
##這個是你檔案存放的路徑(寫指令碼時刪除這句話,把路徑設定為你的目標路徑)
--prefix="/Users/pangrifu/Desktop/程式設計知識/音視訊進階程式碼/lame/thin/arm64" \      
CC="xcrun -sdk iphoneos clang -arch arm64" \
CFLAGS="-arch arm64 -fembed-bitcode -miphoneos-version-min=7.0" \
LDFLAGS="-arch arm64 -fembed-bitcode -miphoneos-version-min=7.0"
make clean
make -j8
make install
複製程式碼

conf igure : 是符合GNU標準的軟體包釋出所必備的命令,所以這裡是通過configure的方式來生成Makef ile檔案,然後使用make和makeinstall編譯和安裝整個庫。可使用conf igure -h命令來檢視一下conf igure的幫助文件,瞭解LAME的可選配置項,具體如下。

--prefix : 將編譯好的庫放在哪一個目錄下

--host : 指定最重要執行的品臺

CC : 指定交叉工具編譯鏈的路徑

CFLAGS : 指定編譯時所帶的引數

實際操作

step1 下載LAME庫檔案

LAME下載地址

step2 編寫指令碼檔案

關於如何建立指令碼檔案,請檢視上一篇文章:Mac下建立.sh指令碼檔案

step3 目錄結構

image.png

step4 生成.a檔案

在終端中 cd 到lame-3.100目錄下

cd /Users/pangrifu/Desktop/程式設計知識/音視訊進階程式碼/lame/lame-3.100 
複製程式碼

然後執行命令sudo ../build_armv7.sh,提示輸入密碼,輸入密碼即可, 此時目錄下多瞭如下的檔案: image.png

同樣的步驟,可以編譯arm64下的版本,然後使用lipo -create來合併靜態庫

注意,此處arm64是不帶v的,本人在編寫指令碼的時候,多謝了一個v,導致出錯了好多次,檢查了很久才找到問題.

通過 lip -creat指令合併arm64和armv7兩個.a檔案 image.png

lipo -create ./arm64/lib/libmp3lame.a(第1個.a檔案路徑) ./armv7/lib/libmp3lame.a(第2個.a檔案路徑) -output libmp3lame.a(輸出檔案)

複製程式碼

合併之後,使用file libmp3lame.a 來驗證,如果輸出如下的內容,則說明編譯成功了:

libmp3lame.a: Mach-O universal binary with 2 architectures: [arm_v7:current ar archive random library] [arm64]
libmp3lame.a (for architecture armv7):	current ar archive random library
libmp3lame.a (for architecture arm64):	current ar archive random library
複製程式碼

image.png