Всем доброго времени суток!
Задача описана в вопросе: необходимо получать кадры из rtsp потока и хранить их в памяти до поры до времени.
Пишу на c#. Но утилита должна быть кросплатформенной и с обязательной поддержкой линукса.
Первая реализация была написана с применением библиотеки umgu.cv (Обвязка вокруг OpenCV). Работало стабильно на винде, но отказалось собираться под линукс. И в копилку минусов - безбожно тратила память.
Под вторую реализацию написал обвязку вокруг ffmpeg. Если по простому, то просто запускаю процесс ффмпег с параметрами, перехватываю кадры и сохраняю куда следует.
ffmpeg -i rtsp://admin:admin@10.8.0.30:5555/ch01/0 -y -c:v png -f image2pipe -
Но работает вся эта история крайне не стабильно.
В локальной сети, где камера находится в двух метрах и одном коммутаторе от сервера показатели фпс и скорости просто поразительные
fps=5.7 q=-0.0 size=267049kB time=00:00:04.96 bitrate=441061.1kbits/s dup=11 drop=0 speed=0.225x
А ещё битрейт, который почему-то очень сильно отличается от того, что указан в настройках камеры (превышает его в несколько раз, может смысл такой медленной работы как раз в этом, не знаю)
В общем, буду крайне признателен за любую наводку, как решить эту задачу малой кровью. Просто изменить параметры вызова ффмпег, использовать какую-то библиотеку, которая будет работать с ртсп на низком уровне... Что угодно.
Я уже почти подошёл к черте отчаяния, что готов описывать работу с протоколом самостоятельно...