我使用一个简单的RTSP服务器,基于Ullaakut/RTSPAllTheThings,构建在GStreamer之上。它被配置为从文件中读取视频并在RTSP上服务。
服务器通常可以工作,但是如果查看器(它消耗RTSP流)连接晚了,服务器将逐渐分配大约3GB的RAM,这段时间使用大约50 %的CPU资源。一旦达到这个限制,CPU使用率就会下降到零,并且不再增加内存。然而,我必须停止这种增长在1GB甚至更早,3GB是太多了。
服务器在启动时报告的管道是:
(应用程序name=mysrc!破译!时间覆盖halignment=left valignment=top阴影-背景=真正的字体-desc=“Sans 10”!时钟覆盖halignment=right valignment=top阴影-背景=真正的字体-desc=“Sans 10”!录像!视频/x-原始,帧=12/1!头巾过滤器!排队!x264enc速度-预设=超快!( rtph264pay name=pay0 pt=96 )
我尝试在队列之后添加最大值字节=512000000,我认为队列应该将峰值限制在512米,但在分配3.3GB之前没有效果。我的文件输入设置为这里。我已经用RTSP_FRAMERATE属性设置了帧速率。没有任何其他的改变,我认为应该影响任何事情。
我需要服务来自服务器的32条流。使用当前的设置,这将需要128 Gb的RAM或左右!
发布于 2019-05-24 12:43:56
我已经切换到没有这些问题的VLC流光器。也许GStreamer在其他地方很棒,它看起来更可配置。无论如何,VLC为我工作,并没有解决问题。
https://stackoverflow.com/questions/56172725
复制相似问题