LibVlcSharp同时拉取两路不同分辨率RTSP视频流时内存占用持续增长致OOM问题求助
LibVlcSharp同时拉取两路不同分辨率RTSP视频流时内存占用持续增长致OOM问题求助
各位大佬好,我最近在开发WPF应用时碰到了一个棘手的内存泄漏问题,想请教下有没有同行遇到过并解决了的:
我现在要做的是同时拉取两路RTSP视频流,分别在两个窗口显示,每路流只做一次订阅。因为LibVlcSharp.WPF自带的VideoView组件不支持overlay管理,所以我改用了MediaPlayer的SetVideoFormatCallbacks和SetVideoCallbacks方法来自己处理WPF端的图像渲染逻辑。
目前遇到的核心问题是:当两路流的分辨率不同时(比如一路是1080p 25fps,另一路是720p 30fps),应用的内存占用会持续缓慢增长,用任务管理器观察的话,内存会一直涨到饱和状态,最后直接抛出OutOfMemoryException。但如果两路流分辨率相同,哪怕帧率不一样,完全不会出现这个问题。而且内存增长的速度还和两路流的分辨率差值正相关:差得小的话每小时涨几MB,差得多的话每小时能飙几百MB。
补充下我的环境信息:我用的是LibVlcSharp 3.9.3版本,libvlc.dll是3.0.21.0版本。两路流都是H264编码,输入源是RTSP URL。
我自己已经排查过的点:
- 跟踪了自身代码里的内存分配和释放逻辑,确认只有在流初始化阶段才会分配内存,没有发现明显的泄漏点;
- 翻了LibVlcSharp相关的讨论线程,没看到有人提过这个特定场景的问题。
有没有人碰到过这种因两路不同分辨率RTSP流导致的内存泄漏问题,并且成功稳住了内存占用的?求支招!
内容来源于stack exchange
相关产品推荐
相关产品推荐

