AVFormatContext
封装格式上下文结构体,也是统领全局的结构体,保存了视频文件封装格式的信息
AVInputFormat
每种封装格式(例如flv,mkv,mp4,avi)对应一个结构体
AVStream
视频文件每个视频(音频)流对应一个该结构体
AVCodecContext
编码器上下文结构体,保存了视频(音频)编解码相关信息
AVCodec
每种视音频编解码器(例如H.264)对应一个该结构体
AVPacket
存储一帧压缩编码数据
AVFrame
存储一帧解码后像素(采样)数据
数据结构包含元素
AVFormatContext
- iformat 输入视频的AVIputFormat
- nb_streams 输入视频的AVStream个数
- streams 输入视频的AVStream[]数组
- duration 输入视频的时长
- bit_rate 输入视频的码率
AVInputFormat
- name 封装格式名称
- long_name 封装格式的长名称
- extensions 封装格式的扩展名
- id 封装格式ID
AVStream
- id 序号
- codec 对应的AVCodecContext
- time_base 该流的时基
- r_frame_rate 该流的帧率
AVCodecContext
- codec 编解码器的AVCodec
- width,height 图像的宽高(只针对视频)
- pix_fmt 像素格式(只针对视频)
- sample_rate 采样率(只针对音频)
- channels 声道数 (只针对音频)
- sample_fmt 采样格式(只针对音频)
AVCodec
- name 编解码器的名称
- long_name 编解码器的长名称
- type 编解码器类型
- id 编解码器ID
AVPacket
- pts 显示时间戳
- dts 解码时间戳
- data 压缩编码数据
- size 压缩编码数据大小
- stream_index 所属AVStream
AVFrame
- data 解码后的图像像素数据(音频采样数据)
- linesize 对视频来说是图像中一行像素的大小,对音频来说是整个音频帧的大小
- width,height 图像的宽高(只针对视频)
- key_frame 是否为关键帧(只针对视频)
- pict_type 帧类型(中针对类型),例如 I,P,B