FFmpeg编译记-编译库

作者 : 开心源码 本文共1851个字,预计阅读时间需要5分钟 发布时间: 2022-05-12 共288人阅读

前一篇文章FFmpeg编译记-依懒库安装中我们已经把相关的依懒库都安装完,并且执行ffmpeg make install命令都可以通过了,接下来我们来编译iOS平台下的FFmpeg库:

这里我们直接用别人写好编译脚本,编译脚本自己写的话,预计还得研究好久,所以这里直接用别人写好的吧!
脚本地址:FFmpeg-iOS-build-script

  • 更改下载版本号,查看build-ffmpeg.sh`文件,找到如下代码,把FF_VERSION改成你要下载的版本号:

    FF_VERSION="3.4.2"if [[ $FFMPEG_VERSION != "" ]]; thenFF_VERSION=$FFMPEG_VERSIONfiSOURCE="ffmpeg-$FF_VERSION"...
  • 而后执行:

    sh build-ffmpeg.sh
  • 脚本则会自动从github中把ffmpeg源码下到本地并开始编译,编译好后在当前目录生成了FFmpeg-iOS文件夹。

下载后的文件结构

  • iOS的通使用库:FFmpeg-iOS/lib/…
  • iOS的通使用库的头文件:FFmpeg-iOS/include/…

    iOS的通使用库

编译FFmpeg编译命令行工具:

  • 因为我们在编译的时候用了–disable-programs编译选项,如下所示:

    CONFIGURE_FLAGS="--enable-cross-compile --disable-debug --disable-programs --disable-doc --enable-pic"

    因而并不会编译命令行相关的工具。因而,我们需要自己编译相关文件来支持FFmpeg命令行的解析。

  • 在编译命令解析相关的库文件的时候,我们需要使用到了一下几个源文件:

编译命令解析相关的头文件

以上文件在FFmpeg的源文件中的如下目录中找到:
ffmpeg-3.4.2 > fftools/…
config.hscratch目录下选在你要编译的构架目录下的config.h
假如你要编译所有构架,那就依次选择每一个config.h到你的工程下面进行编译,再把每次编译出来的.a拿出来,而后进行库合并

  • 在编译的时候我们需要修改ffmpeg.c的main函数,由于一个程序不能有两个main函数,在这里我们改成ffmpeg_main,如下所示:

修改ffmpeg.c的main函数

  • 还需要修改cmdutils.c中的exit_program函数,注释掉原来的函数,改成如下,假如不修改,在FFmpeg命令执行完成后,程序会退出。

    void exit_program(int ret){//    if (program_exit)//        program_exit(ret);//    exit(ret);  program_exit(NULL);}
  • 修改完后,接下来创立一个xcode静态库工程,将刚我们找出来的的源文件拖入项目中。

  • 配置工程头文件搜索路径,我们主要是在FFmpeg-iOS及ffmpeg-3.4.2中搜索:

    • ($(SRCROOT)/../FFmpeg-iOS/include)
    • ($(SRCROOT)/../ffmpeg-3.4.2)
      之所以要在源文件中搜索,是由于编译出来的FFmpeg-iOS文件夹中并没有拷贝所有头文件,只有必要的头文件。在这里我们不需要链接之前编译的库文件,由于静态库原本就只是编译(clang -c)和打包(ar -r)的产物,并不需要链接。
  • 编译完成后通过lipo -create 命令生成模拟器和真机架构的通使用库:

    lipo -create ....(文件路径)/libffmpeg.a  ....(文件路径)/libffmpeg.a -output /Users/xxx/Desktop/libfmpeg.a
  • 最后将合成好的libfmpeg.a文件放到FFmpeg-iOS/lib/..目录下用

以下是各个板块功能简要说明:

libavformat:使用于各种音视频封装格式的生成和解析;
libavcodec:使用于各种类型声音、图像编解码;
libavutil:包含少量公共的工具函数;
libswscale:使用于视频场景比例缩放、色彩映射转换;
libpostproc:使用于后期效果解决;
ffmpeg:该项目提供的一个工具,可使用于格式转换、解码或者电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,用ffmpeg 库解析和解码,通过SDL显示;

【Demo】

相关链接:FFmpeg编译记-依懒库安装

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » FFmpeg编译记-编译库

发表回复