从现有的 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
相关推荐
Android系统攻城狮43 分钟前
Linux FFmpeg深度解析之avformat_open_input调用流程与实战(一)AI视频工具指南2 小时前
一个人能做 AI 短剧吗?实际要做哪些决定开开心心就好3 小时前
本地文件搜索工具,双击Ctrl就能呼出搜索小豆庄3 小时前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口李永奉4 小时前
杰理可视化SDK开发-音频录制功能使用教程_YouziTech_5 小时前
【STM32+MAX98357】MP3转PCM存入Flash并控制音频输出yangmu32035 小时前
万字长文拆解:AI视频生成(SVD/Sora类)的底层技术原理与实现路径xierui1231235 小时前
视频Agent的声音编排:原声、TTS、ASR与背景音乐怎样分工HY小宝F6 小时前
智能摄像头系统 30 天学习计划 Day 09:用 RTSP 把视频送到网络美狐美颜SDK开放平台17 小时前
准备开发直播APP?视频美颜SDK接入前的十项检查清单