1 AVCodecContext和AVCodec
AVCodec 是描述 codec。(名字 , 类型 ,在编码组里面的编号)
AVCodecContext 是 描述
1 使用codec的参数细节。例如:采样率,通道数
2 以及系统如何 使用codec 例如:编码时的线程数,时间基线
AVCodecContext和AVCodec
2 AVFrame 和 AVPacket
AVPacket: 存储解码前数据(编码数据:H264/AAC等)
AVFrame: 存储解码后数据(像素数据:YUV/RGB/PCM等)
FFMPEG结构体分析:AVFrame
FFMPEG结构体分析:AVPacket
frame里面的linesize:
比如视频帧,由于有些设备需要处理内存对齐的问题, 比如638x480分辨率的YUV420P数据,如果要16字节对齐,此时在内存存储的时候是 [0, 637]Y分量的第一行; [640, 1,277]是第二行, 也就是说 [638,639]这里的数据是padding(占位补齐16字节对齐用的), 此时linesize[0]=640, 代表一行Y实际占用640字节。
3 AVStream
AVStream 是描述 stream
比如指定 (音频 or 视频 等) 视频/音频流长度 AVCodecContext *codec 元数据
FFMPEG结构体分析:AVStream
4 AVIOContext
AVIOContext 描述 读写文件的操作
涉及到 数据的缓存 读写指针 缓存结束 URLContext结构体
URLContext结构体 涉及到 各种协议 rtp,rtmp,file等
FFMPEG结构体分析:AVIOContext
5 ffmpeg 支持的codec
ffmpeg5.0在编译时自动生成编解码数组。保存在libavcodec\codec_list.c中,该文件在编译之后才会看到。
之前的保存在 libavcodec\codec_desc.c
ffmpeg 注册编解码器

2490

被折叠的 条评论
为什么被折叠?



