FFmpeg的代码结构和编译系统

本文介绍了FFmpeg的目录结构,包括compact、libavcodec、libavdevice等子目录的功能,并详细讲解了FFmpeg的配置过程,如配置选项、编译系统的工作原理。FFmpeg的编译依赖于Makefile,通过configure脚本生成config.mak文件。文章还提到了FFmpeg的编译目标和库的编译规则,强调了其跨平台性的实现。
摘要由CSDN通过智能技术生成

FFmpeg的目录结构

打开FFmpeg的源代码目录,可以发现目录结构相对比较简单,

compact目录下主要是头文件,是为了兼容不同平台或系统的数据类型定义,例如compat/msvcrt/snprintf.h和snprintf.c是兼容C99的snprintf()和vsnprintf()声明及实现;

libavcodec目录下是编码/解码库所在的代码路径;

libavdevice目录下是和一些特定设备相关的接口实现,比如sdl显示设备,alsa音频输出设备,opengl图形加速设备,v4l2视频设备(比如摄像头);

libavfilter是一个类似DirecShow机制的帧处理函数集,通过graph-based机制,将不同处理功能的filter函数,链接(link)起来;

libavformat是复用/解复用库,一般用于多媒体文件的处理;

libavresample顾名思义,是一个重采样库,比如音频采样率从44.1KHz到96KHz;

libavutil是支撑FFmpeg的工具集,像fifo管理,内存管理,时间管理等;

libpostproc是后期处理库;

libswresample是音频重采样,格式转换和混合;功能和libavresample十分类似,是FFmpeg相对早期的实现方法;

libswscale是颜色空间转换和大小尺寸缩放的库;

cmdutils.c是用户使用命令行进行ffmpeg操作时用到的工具;

ffmpeg.c是ffmpeg工具的源码;

ffplay.c是一个基于FFmpeg库文件的播放器实例;

ffprobe.c是解析媒体文件格式信息的例子;

ffserver.c是RTSP/HTTP流媒体服务器的源代码;

configure是编译前执行配置的脚本;

FFmpeg的配置

FFmpeg在编译前需要进行配置,它的配置选项也极其丰富,可以通过如下命令来查看详细的配置信息,

./configure --help

下面,我们来分类了解一下FFmpeg的配置详情。

帮助选项,可以通过列表显示编解码器信息,复用/解复用信息,硬件加速,解析器,协议,过滤器,输入输出设备等信息,

Help options:
  --help                   print this message
  --list-decoders          show all available decoders
  --list-encoders          show all available encoders
  --list-hwaccels          show all available hardware accelerators
  --list-demuxers          show all available demuxers
  --list-muxers            show all available muxers
  --list-parsers           show all available parsers
  --list-protocols         show all available protocols
  --list-bsfs              show all available bitstream filters
  --list-indevs            show all available input devices
  --list-outdevs           show all available output devices
  --list-filters           show all available filters

标准选项,比如把log输出重定向到某路径,编译后的库文件的安装路径等,[ ]里的内容是默认的配置,

Standard options:
  --logfile=FILE           log tests and output to FILE [config.log]
  --disable-logging        do not log configure debug information
  --fatal-warnings         fail if any configure warning is generated
  --prefix=PREFIX          install in PREFIX []
  --bindir=DIR             install binaries in DIR [PREFIX/bin]
  --datadir=DIR            install data files in DIR [PREFIX/share/ffmpeg]
  --docdir=DIR             install documentation in DIR [PREFIX/share/doc/ffmpeg]
  --libdir=DIR             install libs in DIR [PREFIX/lib]
  --shlibdir=DIR           install shared libs in DIR [LIBDIR]
  --incdir=DIR             install includes in DIR [PREFIX/include]
  --mandir=DIR             install man page in DIR [PREFIX/share/man]
  --pkgconfigdir=DIR       install pkg-config files in DI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值