FFmpeg Xcode 环境搭建
安装 FFmpeg
根据 官方文档 的描述,有三种安装 FFmpeg 的方式,这里我们选择最简单快速的一种,使用 Homebrew 命令安装。
如果还没有安装 Homebrew 的话,请先安装 Homebrew,点击跳转官方网站
我们执行如下命令即可安装好 FFmpeg:
1  | brew install ffmpeg  | 
Xcode 相关配置
Build Settings
我们通过如下命令即可查看 FFmpeg 的相关信息
1  | brew info ffmpeg  | 
会输出类似下面一样的信息
1  | ffmpeg: stable 4.4 (bottled), HEAD  | 
我们在信息中可以找到 FFmpeg 的安装目录如下:
1  | /usr/local/Cellar/ffmpeg/4.4_2  | 
目录中包括两个文件夹 lib 和 include,这两个文件夹我们需要在 Xcode 中配置相关搜索路径。我们打开 Xcode 的 Build Settings 界面,配置 Header Search Paths 和 Library Search Paths。我的本地环境配置如下图所示:
Library
我们切换到 General 或 Build Phases,将 FFmpeg 目录下的 lib 文件夹中的 .a 文件按需添加,如下图:
此时我们的环境就算是配置完毕。
我们在类中随便加点代码:
1  | import Cocoa  | 
桥接文件
1  | 
此时我们 Build 一下,发现是可以编译通过的。
遇到的问题
Build 没问题了,我们 run 一下。此时我们可能碰到 crash,提示信息如下:
1  | dyld: Library not loaded: /usr/local/opt/ffmpeg/lib/libswscale.5.dylib  | 
从提示信息我们可知,是动态库没有签名。我们还需将其手动签名一下。顺便说一句,上面的报错是在 FFmpeg 目录中的 lib 目录下,我们将其签名后可能还有其他库需要签名,我的解决方式是,直接吧报错目录下的所有动态库批量签名。
我们从钥匙串中找到我们证书的名字,类似于:Apple Development: xxx。
我们打开终端,进入对应目录,执行如下签名命令:
1  | codesign -f -s "Apple Development: xxx" *.dylib  | 
引号中的证书信息需要替换成自己的
因为 Xcode 运行代码使用了系统的库,所以我就批量的进行了签名:
1  | codesign -f -s "Mac Developer: xxx" /usr/local/opt/*/lib/*.dylib  | 
当我们签名完成之后,再次进行 run,发现就能跑起来了。
总结
签名的相关命令
1、清除动态库的签名
1  | codesign --remove-signature xxx.dylib  | 
2、查看签名
1  | codesign -vv -d xxx.dylib  | 
或者
1  | codesign -dvvv xxx.dylib  | 
3、重新签名
codesign 的 -f 参数就是强制签名的意思,本文使用的 codesign -f -s 就能直接重新签名。如果不想覆盖原来的签名,可以把 -f 参数去掉。