FFmpeg 数据结构简介

初学FFmpeg,里面的数据结构不清楚,特地整理了FFmpeg基础,方便时常回顾。

1、AVFormatContext

封装格式上下文结构体,描述了一个媒体文件或媒体流的构成和基本信息。是其他所有结构的跟,是一个多媒体文件或流的根本抽象。也就是统领全局的结构体,保存了视频文件封装格式相关信息。

表示程序运行的当前文件容器格式使用的上下文,着重于所有文件容器共有的属性。

iformat: 输入视频的AVInputFormat,如对于mp4或mov为ff_mov_demuxer,关联相应的文件容器格式

nb_streams : 输入视频的AVStream(流)的个数

streams [MAX_STREAMS]:  输入视频的AVStream [ ] 数组,至少2个指针元素,分别指向video stream 和 audio stream,关联音视频流

duration : 输入视频的时长(以微秒为单位)

bit_rate : 输入视频的码率/

2、AVInputFormat

表示输入文件容器格式,着重于功能函数,一中文件容器格式对应一个AVInputFormat结构。

每种封装格式(例如FLV,MKV,MP4,AVI)均对应一个该结构体

name : 封装格式名称

long_name : 封装格式的长名称

extensions : 封装格式的扩展名

id : 封装格式ID

及其他一些封装格式处理的接口函数/3

3、AVStream

视频文件中每个视频(音频)流对应一个该结构体,表示当前媒体流的上下文,着重于所有媒体流共有的属性(运行时才能确定)和关联的其他结构的字段

id : 序号

codec : 该流对应的AVCodecContext,解析器,每一种编码器在进行压缩时,都会对实际负载数据进行封装,加入头信息,如h264,需要解析nal单元

time_base : 该流的时间基准,是一个实数,该流中媒体数据的pts 和dts都将以这个时间基准为粒度。

r_frame_rate : 该流的帧率

duration : 流的总时间,以流的时间基准为单位

codec : 指向该流对应的AVCodecContext结构,调用av_open_input_file() 时生成

 4、AVCodecContext

编解码器上下文结构体,包含了众多编解码器需要的参数信息。保存了视频(音频)编解码相关信息

codec : 编解码器的AVCodec

codec_name/ codec_type/ codec_id/ codec_tag : 编解码器的信息

width  height : 图像的宽高(只针对视频

pix_fmt : 像素格式(只针对视频

sample_rate : 采样率(只针对音频

channels : 声道数(只针对音频

sample_fmt : 采样格式(只针对音频

 5、AVCodec

每种视频(音频)编解码器(例如H.264解码器)对应一个该结构体

name :  编码器名称

long_name : 编码器长名称

type : 编码器类型

id : 编码器ID

及其他一些封装格式处理的接口函数

 6、AVPacket

存储一帧压缩编码数据。

暂存解复用之后、解码之前的媒体数据(一个音/视频帧、一个字幕包等)及附加信息(解码时间戳、显示时间戳、时长等)

pts : 显示时间戳

dts : 解码时间戳

data : 为数据缓冲区指针,大小为size

size : 压缩编码数据大小

stream_index : 所属的AVStream,给出所属媒体流的索引

flags : 标志,其中最低位置1 ,表示该数据是一个关键帧

 7、AVFrame

存储一帧解码后像素(采样)数据

data : 解码后的图像像素数据(音频采样数据)

linesize :

对视频来说:是图像中一行像素的大小

对音频来说:是整个音频帧的大小

width height : 图像的宽高(只针对视频)

key_frame : 是否为关键帧(只针对视频)

pict_type : 帧类型(只针对视频)。例如: I P B

8、 MovContext结构体

 

(PS:手敲可能有误,如您发现错题,还请指出。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值