ffmpeg 结构以及作用:
- AVUtil: 核心工具库
- AVFormat:提供了音视频容器格式的封装和解析以及所支持的协议文件格式和协议库
- AVCodec: 编解码库
- AVFilter: 音视频滤镜库 如视频加水印、音频变声
- AVDevice: 输入输出设备库,提供设备数据的输入与输出,如读取摄像头数据、屏幕录制
- SwrRessample: 音频重采样
- SWScale: 图像格式转换的模块,yuv -> rgb
- PostProc:后期处理
解码流程:
-
av_register_all:
先调用avcodec_register_all来注册所有config.h里面开放的编解码器,然后会注册所有的Muxer和Demuxer(也就是封装格式),最后注册所有的Protocol(即协议层的东西) -
avformat_alloc_context:
分配初始化一个AVFormatContext结构体 -
avformat_open_input:
解码时,根据文件路径判断文件格式,决定使用哪个Demuxer,构建好AVStream -
avformat_find_stream_info:
解码时,作用是从文件中提取流信,将所有的Stream的MetaData信息填充好,先read_packet一段数据解码分析流数据 -
穷举所有的流,查找其中种类为 CODEC_TYPE_VIDEO