前言
网上存在很多iOS端集成FFmpeg的例子,很多写的也比较详细。本文是作者参考网上多个iOS端集成的例子以及亲自实践总结的。希望能给有需要的人提供帮助,少踩一些坑。
1.下载安装FFmpeg
brew install ffmpeg //安装FFmpeg
brew info ffmpeg //查看安装的版本
复制代码
2.下载脚本,使用脚本将下载的FFmpeg转成iOS可用的包
脚本地址:github.com/kewlbear/FF…
在下载到的本地的脚本中找到ffmpeg.sh
根据自己需求修改ffmpeg.sh脚本文件
-
设置FFmpeg的版本
FF_VERSION="4.3.2"
-
设置所要支持的架构
ARCHS="arm64 armv7 x86_64 i386"
-
设置所需要的FFmpeg功能配置
禁用一些不必要的功能,可以有效地减小最终库文件的大小 CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs
--disable-doc --enable-pic" 其中 --disable-cross-compile 禁止交叉编译 其中 --enable-cross-compile 支持交叉编译 -
进入脚本所在文件夹目录,执行脚本
./build-ffmpeg.sh
执行结果
3.将FFmpeg-iOS导入到项目中
- 将FFmpeg-iOS添加到项目中
- 添加依赖库
libz.tbd
libbz2.tbd
libiconv.tbd
AudioToolbox.framework
CoreMedia.framework
VideoToolbox.framework
- 设置搜索的头文件路径
$(PROJECT_DIR)/iOS_FFmpeg_Demo/ffmpeg-universal/include
- 在FFmpeg-iOS中添加ffmpeg.h/.c、cmdutils.h/.c、ffmpeg_opt.c、ffmpeg_filter.c、ffmpeg_hw.c 等文件
4.编译常见报错
-
'config.h' file not found 缺少一个头文件,在刚才的文件夹
scratch目录下随便找个往下找到该文件拖入项目即可; -
'libavcodec/avcodec.h' file not found 类似的缺少文件,去ffmpeg-4.3.2文件夹下对应目录找,这里可能会遇到缺少多个文件,不要慌一个一个对应的找到拖入项目中即可
-
解决main函数重复问题,
FFmpeg也有个main函数,如果不改名就会冲突报错。 -
打开 ffmpeg.c 文件,找到main函数,修改为 ffmpeg_main。
-
并在 ffmpeg.h 中声明。