本文分享如何在 MacOS 上面编译 faac 和 faad2, 编译后的库文件可以直接在 iOS 上面使用.
后续会分享如何编译给 Android 使用的库文件的方法以及实战.
该系列博文:
简介
faad
是 AAC 格式文件的音频解码库. 相对于 FFmpeg 来说比较轻量和简单. 编译出来全平台静态库文件较小, API 也比较简单, 缺点是功能单一, 只能处理 AAC 格式的音频文件。
faac
是与之对应的 AAC 音频编码库. 支持 MPEG-4 和 MPEG-2 的AAC 编码,其特性包括:可移植性好,快速,支持LC/Main/LTP,通过 Dream 支持 DRM.
这两个库虽然很久没有更新了, 但是其功能已经满足很多业务场景了, 并且很好用。
下载源码
点击 源码链接 即可下载源码
自从 2020.08 后该网站已经无法访问了,可以从 What Happened to Audiocoding.com (FAAC & FAAD2) 了解一下。
可以从 Sourceforge.net 下载。
编译 faac
下载完成后, 解压, 将 faac-1.28
放到新建目录 src
下面即可, 目录结构如下:
修改 build_faac.sh
权限:
1 | chmod +x build_faac.sh |
编辑 build_faac.sh
内容
1 | #!/bin/sh |
执行 ./build_faac.sh
, 开始编译。
编译成功后, 生成 build 目录。
其中, universal 生成的库是通用库。
编译 faad2
解压后, 将 faad2-2.7
改名为 faad
.
编写编译的脚本文件, 这里取名为 build_fadd2.sh
1 | touch build_fadd2.sh |
编辑 build_fadd2.sh
文件。
写入如下内容:
1 | #!/bin/sh |
给予执行权限:
1 | chmod +x build_fadd2.sh |
此时目录结构如下:
执行编译脚本, 在当前目录生成 scratch-faad
和 fat-faad
以及 thin-faad
目录, 如下:
使用 fat-faad
里面的库和文件即可。
可以使用下面的命令查看对应的 .a
文件所支持的架构:
1 | lipo -info libfaad.a |
会得到对应的输出:
1 | Architectures in the fat file: libfaad.a are: i386 armv7 armv7s arm64 |
同样可以查看 libfaac.a
.
后记
编译好的文件, 已经放到 github 上面了, 有需要的可以下载使用, 点击 下载链接 进入。
感谢 fflydev/faac-ios-build 提供编译 faac
的 shell, 只需要将里面对应的 SDK 改为本机最新的 SDK 即可。