从现有的 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
相关推荐
春末的南方城市6 小时前
Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然Hygge-star20 小时前
Flask音频处理:构建高效的Web音频应用指南hao_wujing1 天前
使用有限计算实现视频生成模型的高效训练追随远方1 天前
Android音频开发:Speex固定帧与变长帧编解码深度解析aqi001 天前
FFmpeg开发笔记(六十四)使用国产的RedPlayer播放器观看网络视频英英_2 天前
视频爬虫的Python库道剑剑非道2 天前
QT开发技术【ffmpeg + QAudioOutput】音乐播放器 完善毒果2 天前
FFmpeg 低延迟同屏方案weixin_527550402 天前
Linux 环境下高效视频切帧的实用指南ai产品老杨2 天前
减少交通拥堵、提高效率、改善交通安全的智慧交通开源了。