ffmpeg 数据结构

ffmpeg中重要的数据结构记录,

AVFrame结构体:

AVFrame *av_frame_alloc(void)

分配AVFrame并设置默认值,必须调av_frame_free释放

void av_frame_free(AVFrame **frame)

释放AVFrame,如果该AVFrame有引用的AVBuffer,则先释放引用

int av_frame_ref(AVFrame *dst, const AVFrame *src)

增加引用计数

void av_frame_unref(AVFrame *frame)

减少引用计数

void av_frame_move_ref(AVFrame *dst, AVFrame *src)

将src中的每个字段移动到dst,并重置src

int av_frame_get_buffer(AVFrame *frame, int align)

为音频或视频分配新缓冲区,调用前必须先设置格式信息

AVPacket结构体:

 

AVPacket *av_packet_alloc(void)

分配一个AVPacket,并将其字段设置为默认值,必须调用av_packet_free来释放

void av_packet_free(AVPacket **pkt)

释放掉Packet,如果这个Packet有引用的AVBuffer,将会先释放引用。

void av_init_packet(AVPacket *pkt)

初始化Packet,注意,这并不涉及data和size成员,它们必须分别初始化。

int av_new_packet(AVPacket *pkt, int size)

给AVPacket分配内存,这里引用计数会+1

int av_packet_ref(AVPacket *dst, const AVPacket *src)

增加引用计数

void av_packet_unref(AVPacket *pkt)

减少引用计数

void av_packet_move_ref(AVPacket *dst, AVPacket *src)

将src中的每个字段移动到dst,并重置src

AVPacket *av_packet_clone(const AVPacket *src)

克隆一个与src相同数据的Packet,等于av_packet_alloc()+av_packet_ref()

AVFormatContext:统领全局的基本结构体。主要用于处理封装格式(FLV/MKV/RMVB等)。

AVIOContext:输入输出对应的结构体,用于输入输出(读写文件,RTMP协议等)。

AVStreamAVCodecContext:视音频流对应的结构体,用于视音频编解码。

AVFrame:存储非压缩的数据(视频对应RGB/YUV像素数据,音频对应PCM采样数据)

AVPacket:存储压缩数据(视频对应H.264等码流数据,音频对应AAC/MP3等码流数据)

 

posted @   追随技术  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示