00 数据结构查询表
数据结构查询表
AVFormatContext
AVFormatContext
是处理多媒体文件的核心结构体,包含了多媒体文件的封装格式信息。
-
成员:
ic->iformat
: 当前使用的输入格式上下文,指向AVInputFormat
。ic->streams
: 媒体文件中所有流的数组。ic->nb_streams
: 媒体文件中流的数量。ic->duration
: 媒体文件的总时长(微秒为单位)。ic->bit_rate
: 媒体文件的总比特率。ic->start_time
: 文件的起始时间(微秒为单位)。
-
作用:
- 管理多媒体文件的封装格式,如 MP4、MKV 等。
- 存储关于整个多媒体文件的元数据。
- 作为访问和操作媒体文件中流的入口。
AVInputFormat / demuxer
AVInputFormat
是与特定封装格式相关的结构体,定义了如何解析和处理该格式的多媒体文件。
-
成员:
iformat->name
: 封装格式的名称。iformat->long_name
: 封装格式的详细描述。iformat->read_probe
: 用于探测文件是否属于该格式的函数。iformat->read_header
: 读取文件头部信息的函数。iformat->read_packet
: 从文件中读取数据包的函数。
-
作用:
- 定义了特定封装格式的识别、探测和读取方式。
- 作为解复用器,将多媒体文件中的数据分离成独立的流。
AVOutputFormat / muxer
AVOutputFormat
是与特定封装格式相关的结构体,用于将多个流封装成文件。
-
成员:
oformat->name
: 输出格式的名称。oformat->mux
: 用于将数据写入文件的函数。oformat->write_header
: 写入文件头部信息的函数。oformat->write_packet
: 写入单个数据包的函数。
-
作用:
- 定义了如何将多个流封装成特定格式的文件。
- 作为复用器,管理数据的写入过程。
AVStream
AVStream
表示多媒体文件中的单个流(视频、音频或字幕)。
-
成员:
st->codecpar
: 指向AVCodecParameters
的指针,包含流的编解码参数。st->time_base
: 流的时间基准,用于时间戳的转换。st->duration
: 流的持续时间。st->start_time
: 流中第一个帧的起始时间。st->bit_rate
: 流的比特率。
-
作用:
- 存储和管理单个流的元数据和参数。
- 作为访问和操作单个流的入口。
AVCodecParameters
AVCodecParameters
结构体用于保存音视频流的基本参数信息,是描述流的编解码参数的关键结构。
-
成员:
codecpar->codec_type
: 编解码器类型,标识流是视频、音频或字幕。codecpar->codec_id
: 编解码器的 ID,用于唯一确定使用的编解码器。codecpar->codec_tag
: 编解码器标签,通常在容器中用于标识流的编解码器。codecpar->extradata
: 指向额外数据的指针,一些编解码器需要额外初始化数据。codecpar->extradata_size
:extradata
所占用的字节数。codecpar->format
: 音视频帧的像素或采样格式,视频的像素格式或音频的样本格式。codecpar->bit_rate
: 流的比特率,表示流的数据速率。codecpar->bits_per_coded_sample
: 编码样本的位数。codecpar->bits_per_raw_sample
: 原始样本的位数。codecpar->profile
: 编解码器的配置文件,描述编解码器的性能和特性。codecpar->level
: 编解码器的级别,通常与编解码器的编码效率相关。codecpar->width/height
: 视频流的帧宽度和高度。codecpar->sample_rate
: 音频流的采样率。codecpar->channels
: 音频流的声道数。codecpar->sample_fmt
: 音频流的样本格式。codecpar->channel_layout
: 音频流的声道布局。codecpar->sample_aspect_ratio
: 视频流的样本宽高比。
-
作用:
- 提供了流的编解码参数,这些参数对于解码器的初始化和流的正确处理至关重要。
- 允许 FFmpeg 的不同组件,如解封装器和解码器,共享和传递关于流的必要信息。
AVCodecContext
AVCodecContext
包含编解码器的上下文信息,是编解码过程中的核心结构。
-
成员:
codec_ctx->codec_type
: 编解码器的类型,如AVMEDIA_TYPE_VIDEO
。codec_ctx->codec_id
: 编解码器的唯一标识符。codec_ctx->bit_rate
: 编码流的比特率。codec_ctx->width
和codec_ctx->height
: 视频的宽度和高度。codec_ctx->pix_fmt
: 视频的像素格式。codec_ctx->sample_fmt
: 音频的样本格式。codec_ctx->channel_layout
: 音频的声道布局。
-
作用:
- 存储编解码器所需的配置参数。
- 作为编解码器工作时的上下文环境。
AVCodec
AVCodec
定义了特定编解码器的特性和功能。
-
成员:
codec->name
: 编解码器的名称。codec->long_name
: 编解码器的详细描述。codec->type
: 编解码器的类型,如AVMEDIA_TYPE_VIDEO
。codec->id
: 编解码器的唯一标识符。codec->encode2
和codec->decode
: 编解码函数的指针。
-
作用:
- 表示特定的编解码器,提供编解码功能的接口。
AVPacket
AVPacket
用于存储编码后的数据包,包括视频帧、音频样本等。
-
成员:
pkt->stream_index
: 数据包所属的流索引。pkt->pts
,pkt->dts
: 数据包的解码时间戳和显示时间戳。pkt->data
: 数据包的数据缓冲区。pkt->size
: 数据缓冲区的大小。
-
作用:
- 封装编码后的数据,用于在解码器和解复用器之间传输。
AVFrame
AVFrame
存储解码后的帧数据,包括像素信息或音频样本。
-
成员:
frame->width
和frame->height
: 视频帧的宽度和高度。frame->format
: 视频帧的像素格式或音频帧的样本格式。frame->data
: 指向帧数据的指针数组。frame->linesize
: 每行数据的字节数。frame->pts
: 帧的呈现时间戳。
-
作用:
- 存储解码后的多媒体数据,供进一步处理或显示。
发布于