FFmpeg解决内存泄漏--Apple的学习笔记

ffmpeg通过opencv显示的bug分析--Apple的学习笔记后,我等于完成了基于opencv显示框架,但是发现VS2017的内存监控一直在增加

image.png

直接截屏分析说明是外部链接库函数导致的。那么到底是opencv的函数,还是ffmpeg的函数导致的呢?
排除法

  1. 先进行代码自行检查,发现opencv的Mat创建后没有release,结果添加了也是一样的效果。
  2. 接着注释掉opencv显示函数,仅运行ffmpeg,内存泄漏问题依然存在。
  3. ffmpeg的所有函数,网上一个个搜索看哪个函数有嫌疑。结果找到sws_getContext /sws_scale内存泄露问题

解决方法
检查我自己的代码确实sws_getContext不止调用了一次,修改后,仅调用一次。
效果对比
运行视频过程中,内存不再泄漏37s的时候消耗最大内存为62M

image.png

对比没修改前,内存会泄漏,运行34s的时候内存已经达到150M
image.png

分分钟解决了内存泄漏问题,我可以去当侦探了,太有成就感了。祝福大家端午节快乐~

你可能感兴趣的:(FFmpeg解决内存泄漏--Apple的学习笔记)