【发布时间】:2015-04-27 14:07:15
【问题描述】:
我在 Ubuntu 上使用 LIBAV 以 WebM 格式将用户的视频流 (RTP VP8) 保存在服务器上。 问题是,使用 av_write_frame 时内存泄漏。内存使用量不断增长(与 webm 文件大小 相等),并且在完成视频录制后永远不会释放。释放内存 (RAM) 的唯一方法是事后从存储 (HD) 中删除 WebM 文件。
我有两个问题:
- 是否可以在运行时释放
av_write_frame消耗的内存?我正确地释放了packet.data。注释av_write_frame行时,内存使用量没有增加。 -
关闭文件的正确方法是什么?这就是我正在做的事情(它不会释放内存):
av_write_trailer(fctx); avcodec_close(vStream->codec); avio_close(fctx->pb); avformat_free_context(fctx);
【问题讨论】:
-
你是否在每次写操作后使用 av_free_packet 释放数据包?
-
是的,我也在释放分配给
packet.data的内存。问题出在av_write_frame直接或间接,因为我的内存使用量随着 .webm 文件大小线性增长。
标签: memory-leaks ffmpeg libavcodec libav libavformat