我正在使用一个基于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左右!