音视频开发进阶-学习笔记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