从现有的 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
相关推荐
leonyie20225 小时前
7.3 在通知中显示图片或视频(UNNotificationAttachment)ShenZhenDingYue5 小时前
音视频生命探测仪,救援现场的“视听先锋”|鼎跃安全勘察加熊人7 小时前
form+ffmpeg+opus录音压缩音频EasyGBS8 小时前
国标GB28181视频平台EasyCVR顺应智慧农业自动化趋势,打造大棚实时视频监控防线weixin_4424240312 小时前
Opencv计算机视觉编程攻略-第十二节 处理视频序列EasyGBS20 小时前
如何实现两个视频融合EasyCVR平台的数据同步?详细步骤指南梧桐樹下1 天前
ffmpeg时间基与时间戳花落已飘1 天前
SDL显示YUV视频开开心心就好1 天前
手机不同App音量自动调节软件智联视频超融合平台1 天前
国网B接口注册流程详解以及注册失败原因(电网B接口)