ffmpeg重要结构体之AVFrame和AVFormatContext

本文介绍了FFmpeg中两个关键结构体——AVFrame和AVFormatContext。AVFrame用于存储解码后的图像数据,包含YUV数据、图像宽高、格式等信息;AVFormatContext则包含了输入文件的格式信息、流数量、IO上下文等。通过这两个结构体,可以深入理解FFmpeg的解码过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过对FFmpeg的基本了解,我们知道可以通过利用其so库文件,输出YUV图像到文件,而解码后的图像(YUV)数据是存放在AVFrame结构体中的。
第一部分我们就来了解下结构体AVFrame,源代码在 libavutil/frame.h中,
运行输出YUV文件的解码程序对某媒体文件进行解码,在输出第一帧图像后,pFrame(为AVFrame结构的变量)见下图:

在这里插入图片描述

其中主要的变量包括:

uint8_t *data[AV_NUM_DATA_POINTERS]:指针数组,存放YUV数据的地方。如图所示,一般占用前3个指针,分别指向Y,U,V数据。

int linesize[AV_NUM_DATA_POINTERS]:图像各个分量数据在此结构体中的的宽度。注意这并不是图像的宽度。在此例子中图像的尺寸为672X272,而亮度分量的宽度为704,应该是图像宽度经过64对齐后的结果。

uint8_t **extended_data:指向了图像数据。

int width, height:图像的宽高。

int nb_samples:此帧音频的点数。

int format:像素类型(视频),样点类型(音频)

int key_frame:是否关键帧,此例中为视频的第一帧,当然是关键帧了。

enum AVPictureType

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安卓兼职framework应用工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值