从现有的 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
相关推荐
小柯南敲键盘9 小时前
批量图片翻译与视频字幕一站式解决高效跨境电商沟通难题luoyayun36119 小时前
【音频基础学习】第 5 天,理解音量、增益和分贝中微极客19 小时前
2026年AI视频生成模型选型与工程实践指南阿童木写作19 小时前
跨马翻译:一站式图片视频智能处理,提升跨境电商工作效率不羁的木木19 小时前
HarmonyOS技术精讲-Connectivity Kit:蓝牙进阶——GATT服务与音频通道木易 士心20 小时前
深度解析 Android 音频焦点处理与实战开发程序员老陆20 小时前
使用Qt+大华设备SDK预览大华摄像机视频byte轻骑兵20 小时前
【LE Audio】CSIS精讲[4]: 从加密原语到RSI解析全链路拆解EasyDSS1 天前
视频直播点播/音视频点播/云点播/云直播EasyDSS一站式音视频平台赋能社交娱乐场景创新2401_876907521 天前
IEC 61603-2:2004 红外宽带音频传输系统标准拆解|发射 / 接收 / 测试 / 兼容性全指南