FFmpeg的H264编码有内存泄漏吗??!!!

本文探讨了使用FFmpeg解码H264格式时出现的内存泄漏问题,并分享了一种可能的解决方案。作者指出,在使用AVPacket时,如果未能正确地调用av_packet_unref()来释放内存,将会导致内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文来自于:

 点击打开链接ffmpeg解码H264内存问题

靠,内存泄漏好严重。开始怀疑是自己代码问题,调试了半天,又反复改写和优化代码,还是泄漏严重。

拿网上现成的FFMPEG H264编码的范例来测试,同样泄漏很严重。

 

百度了一下,有很多人遇到同样的问题,他们说是编码库本身的内存泄漏。。。。, 无语,操,那FFMPEG的H264编码还能用吗!!!! 抓狂!!!!


------此处省略一万字!!!

--------ffmpeg怎么可能解码h264还会内存泄露,肯定是自己用法不当 造成的, 对自己说.......

------------


-----------------

-----------------------唉.不知道问题解决没有......----------------------------先记录再说....

问题起因是.....(我的方案是从rtsp上获取数据转为AVPacket 后)

-----调用这个 函数....avcodec_send_packet -----这个一点问题没有...

于是 ,,我接下来,可是编码得到一帧数据,(即  得到一个 AVFrame),

-----

我开始调用------

avcodec_receive_frame()

--------就是在这里,,,内存一点点 的上升.........




好再我 在网上找到这样一说法,说是这样的......于是 ,,,,呼呼

当我们使用ffmpeg对视频进行解码时,必须注意AVPacket正确用法,否则容易造成内存泄漏。

我们一般会按下列顺序初始化AVPacket 

AVPacket avpkt;

av_init_packet(&avpkt);

此处调用av_parser_parse2(Parse a packet)

len = av_parser_parse2(_parser, context, &avpkt.data, &avpkt.size,

inbuf+offset, fullSize,

pts, dts, AV_NOPTS_VALUE);

注意av_parser_parse2每次调用会重新给avpkt->data分配内存,用完后一定要调用

av_packet_unref(&avpkt);//pkt重复使用时,需要调用释放部分内存


也就是说:

解码时,av_init_packet调用一次就够,(avpkt 作为类成员 )av_packet_unref需要av_parser_parse2操作完成不再使用后重复调用。

其中还有个av_free_packet(&avpkt),但这东西如何av_packet_unref执行了再执行av_free_packet会崩溃,搞不懂,干脆就不调用了,也没发现内存异常..

地址链接:点击打开链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Teleger

你的支持是我前进的方向

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值