Сервер RTSP на основе GStreamer постепенно выделяет много памяти, если оставить его без запроса - PullRequest
0 голосов
/ 16 мая 2019

Я использую простой RTSP-сервер на основе Ullaakut / RTSPAllTheThings, построенный на основе GStreamer.Он настроен для чтения видео из файла и подачи по RTSP.

Сервер работает в целом, но если программа просмотра (которая использует поток RTSP) запаздывает с подключением, сервер постепенно выделяет примерно 3 ГБ ОЗУ, используя около 50% ресурсов ЦП за все это время.Как только этот предел достигнут, загрузка ЦП падает до нуля и дальнейшее увеличение памяти не происходит.Однако я должен остановить этот рост на 1 Гб или даже раньше, 3 Гб это слишком много.

Конвейер, который сервер сообщает при запуске:

(appsrc name = mysrc! Decodebin! Timeoverlay halignment = valignment влево = top shaded-background = true font-desc = "Sans 10 "! Clockoverlay halignment = правильное выравнивание = 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)

Я пытался добавить max-size-bytes = 512000000 после очереди , которая, как я считаю, должна ограничиватьшип до 512 м, но никакого эффекта до того, как будет выделено 3,3 Гб.Мой ввод файла настроен как здесь .Я установил частоту кадров с помощью свойства RTSP_FRAMERATE.Никаких других изменений, которые, я думаю, не должно повлиять на что-либо.

Мне нужно обслуживать 32 потока с сервера.При текущей настройке потребуется 128 ГБ ОЗУ или около!

1 Ответ

0 голосов
/ 24 мая 2019

Я переключился на VLC streamer , у которого нет этих проблем. Может быть, GStreamer великолепен где-то еще, он выглядит гораздо более настраиваемым. Во всяком случае, VLC работает для меня и не имеет проблем.

...