AVFormatContext描述了一个媒体文件或媒体流的构成和基本信息,位于avformat.h文件中。
int nb_streams:AVFormatContext中所含stream的个数;
AVStream**stream :文件中所有的音视频个数;
char filename[]:输入活或者输出的文件名;
AVStream 音频流和视频流的一些信息。
int index:音视频文件在AVFormatContext中的位置
AVRational time_base:时间基,解码时将pts转换为实际时间;
int64_t duration: 该流的时长,单位为time_base;
AVCodecContext *codec:与此流关联的编解码器的上下文;
AVPacket 此结构体包含了压缩数据,音频的话例如mp3 ,AAC,视频的话例如h264,hevc;
data:包含的压缩数据,例如如果h264数据的话,一个packet几乎等同于一个nal数据;
int size: 数据大小;
int stream_index:是音频数据还是视频数据;
int64_t pts:单位AVStream->time_base;
int64_t dts:单位AVStream->time_base;
AVFrame 此结构体包含了原始数据 音频的话可能是YUV420P,RGB24像素数据,音频的话可能是PCM采样数据
uint8_t * data[] packet:数据的话data[0] 是一个完整的rgb24数据,planar数据的话data【0】Y数据,data【1】U数据,data【2】V数据
linesize:一行数据的大小,通常比一行像素的数据要大
width,height:图像的宽高
nb_samples:音频的采样个数,一个AVFrame中含有多少个采样数据,比如1024个
key_frame:是否是关键帧
format :数据的格式
pic_type:图像的格式
int64_t pkt_pts:帧的展示时间
AVCodecContext此结构体 包含了编解码器的一些信息
AVMediaType codec_type:编解码器所属地额类型,是音频还是视频。
AVCodec *codec:此结构体关联的编解码器-解码时avcodec_open2 会为此赋值,编码时需要先创建AVCodec,然后在avcodec_open时为此 变量赋值。
int width,height: 图像的宽高
int channel_layout: 音频的声道个数
AVCodec 包含的编解码器的具体信息
const char * name: 编解码器的名称
const char * long_name :详细的编解码器名称
enum AVMediaType type :编解码器的类型