iOS项目中集成 FFmpeg

2,567 阅读2分钟

前言

网上存在很多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 中声明。