在视频传输平台中,由于数据较大,不可避免会出现内存增长的问题,在EasyNVR视频平台中,由于支持了H265视频的播放,内存占用会较小,因此在大多情况下我们推荐用户采用H265编码格式播放视频,然而在一些需要用到H264格式的项目中,更新H265转H264模块后,EasyNVR的内存使用量会随着时间一直增长,且显示占用非常高。
在转码模块的函数中,可能存在部分操作没有正确的释放使用的内存,导致内存随着运行时间一直增长。
在仔细阅读转码模块代码后发现,在开始转码时CGO模块会malloc出一块AV_frame的堆内存,但在使用后并没有调用free接口。因此导致此块内存一直没有释放,长时间运行会导致内存一直增长。
因为H265转码模块的动态库,开始转码函数是异步调用在调用成功后,主动free掉malloc出的堆内存即可。
与图一使用内存对比,第一个NVR程序是没有增加free函数的,第二个是增加的,内存占用有明显区别。
关于内存占用,我们之前也解决过EasyGBS内的相关问题:EasyGBS快照拉流频繁占带宽及内存怎么解决。大家有兴趣可以了解一下。更多视频相关解决方案,欢迎联系我们咨询。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。