FFMPEG,C++,内存泄漏,我做错了什么?
FFMPEG, C++, Memory leak, what am I doing wrong?
所以我构建了这个应用程序,它使用IP摄像机rtsp源并用它做有趣的事情,但是我有一个小的内存泄漏,我刚刚才确定。
如果我只是运行这个
while (av_read_frame(input_format_context, &input_packet) >= 0) {}
它只会成长,成长...那么我错过了什么?
我使用的是 ffmpeg 的 Windows 端口,我的版本是 58.9.100.0 会不会是FFMPEG本身的泄漏?
来自文档:
如果 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。
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- 我在这个课上做错了什么?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 我做错了什么?GetDiskFreeSpaceExA的功能根本不起作用
- 我在查找和字符串上做错了什么?
- 我正在尝试用 c++ 制作一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- 我在尝试将多个值push_back向量时出错。我做错了什么?
- 插入排序:我做错了什么?