copy from zhujiamin
FFmpeg是集成解码、编码、转码、复用、解复用、流化、滤波、播放等完整解决方案的多媒体开源程序,在多媒体领域广泛使用
用当前R版本使用的FFmpeg-4.2.2介绍一下源码目录结构:
源码库
libavformat:音视频格式的封装与解析
libavcodec: 音视频流的编解码
libavutil:包含一些公共的工具函数
libswresample: 音频重采样,帧数据格式转化
libswscale: 图片、视频帧缩放,颜色空间转换
(以上是OP的FFmpeg框架用到的库,用于音视频、缩略图的解码播放)
libavdevice:多媒体设备交互,从输入设备读取数据,或向输出设备写数据
libavfilter:音视频过滤器,实现滤镜、水印、裁剪、翻转、倍速等效果处理
libpostproc:用于后处理
libavresample:功能同libswresample,由于历史原因还保留但不再维护,用libswresample替代
configure:FFmpeg配置文件,用于检测FFmpeg的编译环境,并根据用户配置的选项生成config.mak,config.h等文件,提供给Makefile使用
config.h:执行configure文件生成的包含各种配置信息的文件
Makefile:FFmpeg的Makefile文件,根据configure生成的配置文件编译源码
doc:包含说明文档和各种功能用例代码,还可以选择编译用例生成可执行文件,其中最常用的文件有:
1.APIchanges:记录了FFmpeg所有版本关键API变化的简要说明,版本升级时若有API找不到定义了,可以先在此文件找下有没有相关说明
2.examples文件夹:包含了上述FFmpeg源码库中主要功能的用例代码,学习如何调用FFmpeg实现某个子功能时,通常要参考对应example的代码
fftools:包含ffmpeg(命令行工具)、ffplay(官方播放器)、ffprobe(音视频文件分析工具)应用程序的源码,可以编译成可执行文件
ffbuild:包含一些编译相关的文件(旧版本是直接放在根目录)
1.config.mak:由configure生成的Makefile,保存了用户在configure的配置信息
2.common.mak:包含一些通用代码的Makefile
3.library.mak:编译类库的Makefile(和libavXXXX/Makefile配合使用)
4.config.log:配置log,执行./configure报错时查看原因