1、FFmpeg模块分类
打开FFmpeg源码,会发现有一系列libavxxx的模块,这些模块很好地划分了代码的结构和分工。
libavformat,format,格式封装
libavcodec,codec,编码、解码
libavutil,util,通用音视频工具,像素、IO、时间等工具
libavfilter,filter,过滤器,可以用作音视频特效处理
libavdevice,device,设备(摄像头、拾音器)
libswscale,scale,视频图像缩放,像素格式互换
libavresample,resample,重采样
libswresample,也是重采样,类似图像缩放
libpostproc,后期处理
2、FFmpeg核心结构体
AVFormatContext:解封装功能的结构体,包含文件名、音视频流、时长、比特率等信息;
AVCodecContext:编解码器上下文,编码和解码时必须用到的结构体,包含编解码器类型、视频宽高、音频通道数和采样率等信息;
AVC