zoukankan      html  css  js  c++  java
  • 音视频提取功能组件EasyStreamingServer读取本地文件出现内存泄露问题如何修复?

    EasyStreamingServer是一种支持文件,RTSP,RTMP,HTTP等各种流媒体协议的音视频提取功能组件,支持H.264,H.265,PCM,AAC等各种音视频编码格式输出,支持Windows,Linux ,Android,iOS,ARM等各种平台。

    当TSINGSEE青犀视频研发人员通过EasyStreamingServer读取本地文件时,出现了内存泄露问题。

    问题分析

    使用EasyStreamingServer读取本地文件时,我们看到内存一直在增长,对比拉取网络流,如RTSP流,内存消耗相对稳定,未出现内存泄露。

    在拉取本地文件时,内存如下

    由上可以看到,内存消耗一直在增长。但是拉RTSP流就未出现如此增长的情况。

    从代码逻辑来看,文件与RTSP流不同的是,使用了av_bitstream_filter_filter,问题也就是出现在此地方。av_bitstream_filter_filter会重新分配内存,需要在使用后及时释放,否则就会出现内存泄露问题。

    通过以上分析,我们可以推断是在EasyStreamingClient中使用av_bitstream_filter_filter后未及时释放内存导致的内存泄漏。

    我们可以通过增加如下代码解决内存泄露问题:

    if (m_vbsf_h264_toannexb != NULL)
    {
    	av_free(packet.data);
    	packet.data = NULL;
    }
    

    再次测试后,我们没有再发现内存泄漏的问题,所以在此可以给大家提醒,如果使用av_bitstream_filter_filter,则一定要及时释放内存。

     
  • 相关阅读:
    Mysql语句练习
    Mysql-------查询各科成绩前三名的记录
    Mysql--查询"01"课程比"02"课程成绩高的学生的信息及课程分数
    模态框拖拽案例分析--元素偏移量 offset 系列
    CSS中z-index的属性与使用
    《将博客搬至CSDN》
    CSS中Position几种属性的总结
    考研数学一
    ubuntu16.04安装mysql报错解决
    LoRaWAN 规范1.0 (章节10~13)
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/13743883.html
Copyright © 2011-2022 走看看