如果没有请求,基于GStreamer的RTSP服务器会逐渐分配大量内存

时间:2019-05-16 16:14:05

标签: memory gstreamer rtsp

我正在使用一个基于Ullaakut / RTSPAllTheThings的简单RTSP服务器,该服务器构建在GStreamer的顶部。它被配置为从文件中读取视频并通过RTSP投放。

服务器通常可以正常工作,但是如果查看器(使用RTSP流的用户)延迟连接,则服务器会逐渐分配3 Gb的RAM,在这段时间内使用大约50%的CPU资源。一旦达到此限制,CPU使用率将降为零,并且不再增加内存。但是,我必须以1 Gb或更早的速度停止这种增长,而3 Gb太多了。

服务器在启动时报告的管道为:

(appsrc name = mysrc!解码器!timeoverlay halignment = left valignment = top shaded-background = true font-desc =“ Sans 10”!clockoverlay halignment = right valignment = top shaded-background = true font-desc =“ Sans 10”!videorate!video / x-raw,framerate = 12/1!capsfilter!queue!x264enc speed-preset = superfast!rtph264pay name = pay0 pt = 96)

我试图在 queue 之后添加 max-size-bytes = 512000000 ,我认为应该将峰值限制在512m,但在分配3.3 Gb之前还是无效。我的文件输入设置为here。我已经使用RTSP_FRAMERATE属性设置了帧频。我认为没有其他改变会影响任何事情。

我需要从服务器提供32个流。在当前设置下,这将需要128 Gb的RAM左右!

1 个答案:

答案 0 :(得分:0)

我已切换到没有这些问题的VLC streamer。也许GStreamer在其他地方很棒,它看起来更具可配置性。无论如何,VLC为我工作,并且没有解决问题。