分享来自“HarmonyOS开发者”的文章《Mac编译支持HarmonyOS NEXT的FFmpeg》,作者:Kylin。
01 搭建编译环境
1. 安装编译工具
编译ffmpeg首先需要以下工具命令:gcc, cmake, make, pkg-config, autoconf, autoreconf, automake,ninja,按以下命令依次检查并安装。
以cmake为例:
// 检查是否安装
cmake —version
// 安装工具
brew install cmake
2. 下载SDK
下载地址:https://gitee.com/openharmony-sig/oh-inner-release-management/blob/master/Release-Testing-Version.md
SDK 分为两个版本 full 版本和 public 版本,这两个版本的 SDK 中关于 c/c++ 编译的部分是相同的,因此我们下载哪个都一样( full 版本的 SDK 在 ets 层提供了更多的 API ),根据自己环境自行下载对应版本的 SDK即可,我们本次使用的是Mac x86,所以选择mac-sdk版本 。
下载后得到压缩包L2-SDK-MAC-FULL.tar.gz
3. 解压SDK
# 解压后得到sdk目录
tar -zxvf L2-SDK-MAC-FULL.tar.gz
# 进入sdk工具包目录
cd sdk/packages/ohos-sdk/darwin
# 解压native工具包
unzip native-darwin-x64-4.0.8.1-Beta1.zip
4. 配置环境变量
lycium支持的是C/C++三方库的交叉编译,SDK工具链只涉及到native目录下的工具,故OHOS_SDK的路径需配置成native工具的父目录,mac环境中配置SDK环境变量方法如下:
# 打开.bash_profile
vim ~/.bash_profile
# 添加配置
export OHOS_SDK=/Users/xxx/harmony/sdk/packages/ohos-sdk/darwin # 此处SDK的路径使用者需配置成自己的sdk解压目录
# 更新配置
source ~/.bash_profile
5. Copy编译工具
为了简化开发中命令的配置,我们针对arm架构以及aarch64架构集成了几个编译命令,存放在lycium/Buildtools目录下,在使用lycium工具前,需要将这些编译命令拷贝到SDK对应的目录下,具体操作如下:
# 进入到工具包目录
cd lycium/Buildtools
# 可校验工具包是否正常, 若输出"toolchain.tar.gz: OK"则说明工具包正常,否则说明工具包异常,需重新下载
sha512sum -c SHA512SUM
# 解压拷贝编译工具
tar -zxvf toolchain.tar.gz
# 将命令拷贝到工具链的native/llvm/bin目录下
cp toolchain/* ${OHOS_SDK}/native/llvm/bin
6. 设置编译机cmake识别OHOS系统
由于sdk中的cmake版本过低, 导致很多开源库在cmake阶段报错. 这个时候就需要用户在编译机上安装一个高版本的cmake(推荐使用3.26及以上版本), 但是 cmake官方是不支持OHOS的, 解决方案:
cp $OHOS_SDK/native/build-tools/cmake/share/cmake-3.16/Modules/Platform/OHOS.cmake xxx(代表你编译机安装的cmake的路径)/3.28.3/share/cmake/Modules/Platform
02 编译FFmpeg
1. 下载仓库
git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1
三方库目录结构
tpc_c_cplusplus/thirdparty/FFmpeg #三方库FFmpeg的目录结构如下
├── docs #三方库相关文档的文件夹
├── HPKBUILD #构建脚本
├── SHA512SUM #三方库校验文件
├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息
├── README_zh.md
2. FFmpeg脚本修改
进入工程目录
cd tpc_c_cplusplus/
进入thirdparty/FFmpeg目录,找到HPKBUILD文件并打开
在configure命令后添加指令–disable-x86asm
3. build.sh脚本修改
进入编译目录
cd tpc_c_cplusplus/lycium
编辑build.sh,因为build.sh默认没有支持macOS,所以需要对脚本做一些调整。
删除9~26行,但要保留11行和12行
4. 开始编译
执行编译脚本
./build.sh FFmpeg
如果遇到“无法打开“clang”,来自身份不明开发者解决”之类的错误,执行以下命令关闭安全检查。
sudo spctl --master-disable
如果编译后还会遇到类似如下问题
则点击“取消”,然后打开macOS的“安全性与隐私”,允许此软件即可
5. 编译成功
ALL JOBS DONE!!!
最后,在lycium/usr/FFmpeg目录可以看到编译成功后的文件
作者:Kylin
来源:HarmonyOS开发者
原文:https://mp.weixin.qq.com/s/yPzKbV-sxcZbpzxbYaA4EQ
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。