从现有的 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
相关推荐
tokepson5 小时前
关于音频处理工具FFmpeg | 笔记备注零匠学堂20258 小时前
移动学习系统,如何提升企业培训效果?Silicore_Emma8 小时前
芯谷科技—D8227 双通道音频功率放大集成电路产品简介与应用推广生活爱好者!9 小时前
【影视项目】NAS 部署稳定视频订阅源咪咕智算菩萨10 小时前
2025年Sora类视频生成模型架构剖析:时空编码与扩散机制Hello.Reader12 小时前
用纯 Go 实现一个 AES-128 加密 m3u8 视频下载器(不依赖 ffmpeg)EasyCVR12 小时前
安防监控EasyCVR视频汇聚平台RTSP流播放异常的原因排查DisonTangor12 小时前
Step-Audio-R1 首个成功实现测试时计算扩展的音频语言模型音视频牛哥14 小时前
从低延迟到高可用:RTMP与 HTTP/HTTPS-FLV在App播放体系中的角色重构Hommy8814 小时前
如何利用剪映小助手实现视频批量剪辑?