Получите поток RTP с OpenCV - Проблема с apiPreference: CAP_GSTREAMER - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть приложение, в котором я использую OpenCV для обработки изображений. Я хочу прослушивать порт (например, 4000) для входящих RTP-пакетов (я не всегда знаю, откуда они отправляются).

Я пытался использовать gstreamer api в OpenCV для этого (псевдокод):

cv::VideoCapture cap;
cap.open("udpsrc port=4000 ....... ! appsink")

Казалось, что это работает нормально, но через некоторое время я заметил утечку памяти. После проверки valgrind я нашел много сообщений о возможных потерях.

Valgrind Check

Я пытался

Я нашел эту ссылку: https://github.com/opencv/opencv/issues/5715 и пробовал разные версии OpenCV (3.4.2, 3.4.7 и 4.1.0), но со всем у меня утечка памяти. Я также попытался добавить «sync = fale max-buffers = 1 drop = true» в конце gst-конвейера, но это также не решает проблему.

Мне нужно

I был бы признателен, если кто-то знает решение этой проблемы. Или если кто-то может порекомендовать, что я мог бы использовать вместо gstreamer для достижения желаемого поведения.

...