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协议等)。
AVStream,AVCodecContext:视音频流对应的结构体,用于视音频编解码。
AVFrame:存储非压缩的数据(视频对应RGB/YUV像素数据,音频对应PCM采样数据)
AVPacket:存储压缩数据(视频对应H.264等码流数据,音频对应AAC/MP3等码流数据)
本文来自博客园,作者:追随技术,转载请注明原文链接:https://www.cnblogs.com/545235abc/p/15842700.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)