ffmpeg在iOS上编译,github上有两个开源的编译脚本,https://github.com/tanersener/mobile-ffmpeg和https://github.com/kewlbear/FFmpeg-iOS-build-script,前者能变iOS和android,后者看名字就知道很专注。问题是,前者的iOS只能支持静态库(出处),好在后者编译起来挺方便的
编译ffmpeg
下载 https://github.com/kewlbear/FFmpeg-iOS-build-script,后在命令行中运行build-ffmpeg.sh,等到风扇不再狂转后,得到thin目录如图:
对应的几个不同的cpu架构,这里,模拟器用的是x86_64.
但是,想要编译动态库,则需要修改build-ffmpeg.sh中21行,添加–enable-shared参数。
CONFIGURE_FLAGS="--enable-shared --enable-cross-compile --disable-debug --disable-programs \
--disable-doc --enable-pic"
验证库是否可用
因为编译过程过于顺利,也不知道这个库是不是真的有用。在前一篇文章中,阐述了如何在Swift写的iOS程序中调用c库的方法(传送门)
- 找到c++代码,FunctionFromCPP.cpp添加ffmpeg的hello world代码,参考雷霄骅的最简单的基于FFMPEG的Helloworld程序
char * configurationinfo()
{
char *info=(char *)malloc(40000);
memset(info,0,40000);
av_register_all();
sprintf(info, "%s\n", avcodec_configuration());
return info;
}
char * FunctionFromCPP::hello() {
char *infostr=NULL;
infostr=configurationinfo();
printf("\n<<Configuration>>\n%s",infostr);
free(infostr);
return "Hello from CPP world!";
}
- 添加头文件和库文件的搜索目录,这里因为在模拟器里面跑,所以选的目录是x86_64,真机选arm64
- 添加程序的链接选项
- 运行后,XCode的输出中打出,Configure的选项,对应之前在脚本中设置的CONFIGURE_FLAGS,可以看出是一一对应的,至此,可以确定,我们编译出来的库是正确可用的。