从现有的 Packet 拷贝一个新 Packet 的时候,有两种情况:
• ①两个 Packet 的 buf 引用的是 同一数据缓存空间 ,这时 候要注意数据缓存空间的释放问题;
• ②两个 Packet 的 buf 引用不同的数据缓存空间 ,每个 Packet都有数据缓存空间的 copy ;

FFmpeg 是通过数据共享的形式 拷贝数据的,也就是通过浅拷贝完成数据的copy,
那么浅拷贝是有问题的,FFmpeg是如何解决这一问题的呢?
通过引用计数的方式来fix这个问题

更加精确的说明:

对于多个 AVPacket 共享同一个缓存空间, FFmpeg 使用的 引 用计数的机制(reference-count ) :
◼ 初始化引用 计数为 0 ,只有真正分配 AVBuffer 的时候, 引用计数初始化为1 ;
◼ 当有新的 Packet 引用共享的缓存空间时, 就将引用计数 +1;
◼ 当释放了引用共享空间的 Packet ,就将引用计数 -1 ;引 用计数为0 时,就释放掉引用的缓存空间 AVBuffer 。
◼ AVFrame 也是采用同样的机制。




音视频开发10 FFmpeg 内存模型-AVPacket, AVFrame
hunandede2024-06-03 15:06
相关推荐
网管NO.122 分钟前
视频核心技术 07:音视频同步与延迟优化 —— 为什么直播会卡顿 / 不同步?怎么解决?云梦谭1 小时前
SoX:音频处理领域的“瑞士军刀”轻口味1 小时前
HarmonyOS 6.1 全栈实战录 - 08 视讯巅峰:Media Kit 视频缩略图批量提取与 HDR 渲染链路实战小为资料库2 小时前
英语六级听力历年真题汇总电子版PDF(含听力音频mp3、答案解析及听力原文)moonsims3 小时前
空-地-人语音协同系统:AGH Audio Collaboration-系统级音频协同基础设施小为资料库3 小时前
英语四级听力历年真题汇总电子版PDF(含听力音频mp3、答案解析及听力原文)学Linux的语莫4 小时前
FFmpeg和流媒体服务器AI创界者4 小时前
AI视频新突破:Ltx2.3-relay-smart 图生视频整合包,双提示词驱动告别画面崩坏Likeadust4 小时前
私有化视频会议系统EasyDSS上线重磅功能:替换视频,数据“无损”继承!DogDaoDao4 小时前
【GitHub】SkyReels-V2 无限时长电影级视频生成模型:技术架构与核心原理深度解析