FFMPEG,C ++,内存泄漏,我在做什么错?

时间:2018-09-10 08:52:44

标签: c++ memory-leaks ffmpeg

因此,我构建了一个使用IP摄像机rtsp提要并能有趣的应用程序,但是我的内存泄漏很小,只是现在才固定下来。

如果我刚运行

while (av_read_frame(input_format_context, &input_packet) >= 0) {}

它会变得越来越快……那么我想念什么?

Am使用ffmpeg的Windows端口,我的版本是58.9.100.0 可能是FFMPEG本身泄漏了吗?

1 个答案:

答案 0 :(得分:0)

摘自文档:

  

如果pkt-> buf为NULL,则该数据包一直有效,直到下一个   av_read_frame()或直到avformat_close_input()。否则包   无限期有效。在这两种情况下,必须使用   不再需要av_packet_unref。

像这样吗?

 AVPacket *pPacket = av_packet_alloc();
 if (!pPacket)
 {
    logging("failed to allocated memory for AVPacket");
    return -1;
 }

 while (av_read_frame(pFormatContext, pPacket) >= 0)
 {
    auto  response = decode_packet(pPacket, pCodecContext, pFrame);
    if (response < 0)
        break;
    }

    av_packet_unref(pPacket);
  }

PS:请不要成为货运邪教的受害者,请研究源代码。这绝不是一个完整的例子。有正在使用ffmpeg的项目。