Как я могу использовать FFMPEG, чтобы добавить задержку для потока, отправляемого с (v4l2) веб-камеры на медиа-сервер?
В данном случае используется что-то вроде камеры безопасности, где я хочу иметь возможность передавать видео на сервер, когда что-то обнаруживается в видео. Самый простой способ обеспечить захват интересующего события на видео - использовать FFMPEG для потоковой передачи с камеры на виртуальное устройство с обратной связью с добавленной задержкой. Это устройство с обратной связью затем может быть использовано для запуска потоковой передачи в реальном времени, когда происходит даже интерес.
В GStreamer я бы выполнил такую задержку с помощью параметра min-threshold-time
элемента queue
. Например, следующий (значительно упрощенный) пример конвейера добавляет задержку в 2 секунды к выходу, исходящему от веб-камеры v4l2 перед его отображением:
gst-launch-1.0 v4l2src device=/dev/video1 ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 min-threshold-time=2000000000 ! xvimagesink
Как мне сделать то же самое с FFMPEG? Есть некоторые технические проблемы, которые мешают нам использовать GStreamer для этого.
Я исследовал вариант itsoffset
для этого, но, насколько я могу судить, его можно использовать только для уже записанных файлов, и неясно, какой будет хорошая альтернатива.