GSTREAMER доступ к видео до события - PullRequest
0 голосов
/ 30 августа 2018

У меня есть ПО, которое выполняет некоторый анализ видео, как только происходит событие (тревога).

Поскольку на встроенной плате недостаточно места, я должен начинать запись видео только при возникновении тревоги; Алгоритм работает с видео, хранящимся в автономном режиме (это не алгоритм реального времени, поэтому видео следует хранить, его недостаточно для подключения к видеопотоку).

В настоящее время я могу прикрепить видео и сохранить его, как только обнаружу состояние тревоги. Однако я хотел бы проанализировать данные за 10 секунд до того, как событие произойдет. Можно ли предварительно записать до 10 секунд в виде очереди FIFO, не сохраняя весь поток на диске?

Я нашел что-то похожее на мои требования здесь:

https://developer.ridgerun.com/wiki/index.php/GStreamer_pre-record_element#Video_pre-recording_example

но я хотел бы знать, есть ли какой-нибудь способ получить тот же результат, не используя инструмент ridgerun. С наилучшими пожеланиями Giovanni

1 Ответ

0 голосов
/ 31 августа 2018

Я думаю, что перепутал свои идеи, и обе они кажутся похожими. Я предлагаю следующее:

  1. Имейте элемент, который ведет себя как кольцевой буфер, но который вы можете передавать назад во времени. Хорошим примером для тестирования может служить элемент queue. Взгляните на буферизацию со сдвигом времени .

  2. Затем сохраните содержимое в файл по тревоге и используйте другой конвейер, который читает из него. Например, используйте tee или output-selector.

                              | -> ring-buffer
    src -> output-selector -> |   
                              |-> (on alarm) -> ringbuffer + live-src -> file-sink
    

Из вашего вопроса я понимаю, что ваша src может быть живой камерой, и, следовательно, сделать это может быть сложно. Возможно, вам придется реализовать собственный плагин, как это было сделано командой RidgeRun, в противном случае это решение скорее хакерское, а не осмысленное решение. К сожалению, ссылок на такое решение не так много, возможно, вам придется попробовать его.

...