从现有的 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
相关推荐
街灯L35 分钟前
【Ubuntu】使用ffmpeg解析m3u8网页视频VidDown5 小时前
VidDown 使用介绍:一个免费、本地化的在线工具集VidDown5 小时前
VidDown 视频解析下载:免安装、无水印、免费使用byte轻骑兵6 小时前
【LE Audio】CAP精讲[15]: 音频城堡的安保体系,全流程安全防护与权限管控huangdong_7 小时前
拼多多商品图片视频批量采集:整店自动分类与高清原图Szime7 小时前
深智微科技本周客户常询型号榜:华润微音频功放、存储器件、BMS与车规接口方向FFZero18 小时前
[mpv脚本系统] (四) 脚本加载与事件循环系统SPC的存折8 小时前
MySQL完整学习手册(视频精华版)ACP广源盛139246256738 小时前
GSV2231 三屏显示扩展芯片@ACP#RTX Spark AI 终端多屏协作专属解决方案zhangfeng11338 小时前
想做自媒体数字人访谈视频,在百度 AI Studio 上安装 OpenAvatarChat,显存要求