gStreamer Утечка памяти для записи видео

Привет, я пытаюсь записать поток rtsp, исходящий с камеры (формат H264).

Я использую следующую команду gst для записи в формате MPEG4

gst-launch -e rtspsrc location=rtsp://10.17.8.136/mediainput/h264 latency=100 ! decodebin ! ffenc_mpeg4 ! avimux ! filesink location=test.mp4

и формат H264

gst-launch-0.10  -e rtspsrc location="rtsp://10.17.8.136/mediainput/h264" latency=100 ! rtph264depay byte-stream=false ! capsfilter caps="video/x-h264,width=1920,height=1080,framerate=(fraction)25/1" ! mp4mux ! filesink location=testh264.mp4

Оба занимаются записью, но я заметил, что объем памяти RAM постепенно увеличивается.

Есть ли в gStreamer утечка памяти. или есть проблема в моей команде конвейера?


person Kiran Thakkar    schedule 24.01.2012    source источник


Ответы (1)


Это не утечка, мультиплексор mp4 создает индексную таблицу в памяти, прежде чем записывать ее на диск на eos.

person ensonic    schedule 26.02.2012
comment
что мне делать, чтобы этого избежать? - person Kiran Thakkar; 29.02.2012
comment
Хм? Вы действительно не можете этого избежать. Когда вы остановите запись, память будет освобождена. Сколько стоит прибавка за минуту? - person ensonic; 01.03.2012
comment
Этого я не измерял. Увеличивается постепенно. мое приложение требует работы 24 * 7. поэтому он выйдет из строя, как только ОЗУ будет заполнено. Вы можете предложить альтернативные решения? - person Kiran Thakkar; 02.03.2012
comment
Может быть, вы могли бы более подробно рассказать, чем вы хотите заниматься. Если вы хотите записать что-то в течение 24 * 7, ваш диск в какой-то момент заполнится. Если вы хотите транслировать видео, вы должны использовать streamable = TRUE для mp4mux. avi не поддерживает потоковую передачу. - person ensonic; 03.03.2012
comment
Диск может быть заполнен, не проблема. Проблема в том, что объем оперативной памяти увеличивается во время записи 24 * 7. Система выйдет из строя, когда оперативная память заполнится должным образом. - person Kiran Thakkar; 03.03.2012
comment
Пожалуйста, узнайте больше об используемых вами форматах файлов, прежде чем заявлять об утечке памяти. Пожалуйста, попробуйте также то, что я предложил в предыдущем комментарии. Если вы хотите записать действительно длинный файл, и файл должен быть доступен для поиска, купите больше оперативной памяти. - person ensonic; 04.03.2012
comment
Дорогой друг, возможно, Вы не поняли мой вопрос. Я не утверждаю, что в GStreamer есть утечка памяти. Я использую набор команд Gst для записи потока Mpeg4 и H264. Во время записи объем оперативной памяти моего ПК постоянно увеличивается. Это потому, что вы предполагаете, что мультиплексор mp4 создает индексную таблицу в памяти. Как можно использовать больше оперативной памяти? У меня достаточно оперативной памяти (4 ГБ) для этого приложения. возможно, вы думаете о жестком диске, на котором записывается видео, не так ли? Я согласен, что жесткий диск может заполниться, когда мы продолжим запись видеоданных. Но оперативная память должна быть постоянной. - person Kiran Thakkar; 05.03.2012
comment
На самом деле я посвежее в Gstreamer. Не могли бы вы подробнее рассказать о своем ответе? - person Kiran Thakkar; 06.03.2012
comment
Да брось. Попробуйте mp4mux streamable = True в конвейере выше. - person ensonic; 12.03.2012