Задать вопрос
@anton_tom

Как передать видеопоток с IP-камеры в OpenCV в облаке?

К моей домашней сети подключена IP-камера. Имеется облачный сервер с GPU, на котором запускается скрипт по распознаванию объектов на видео. Необходимо получить видеопоток с моей камеры, чтобы передать его в cv2.VideoCapture().
Каким образом оптимальнее всего реализовать передачу потока в облако (с минимально возможной задержкой)?

P.S. С матчастью стриминга знаком поверхностно. Если локально подключаюсь к RTSP моей камеры - получаю лаг на видео в 2-3 секунды, что не совсем приемлимо. Пока нашел решение на основе библиотеки ImageZMQ (в основе лежит библа ZMQ для асинхронной передачи сообщений в распределенных системах) - стоит ли копать в этом направлении, или есть решения проще?
  • Вопрос задан
  • 751 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Drno
Если у Вас обычная IP камера и там прошивка от производителя - то RTSP... я не думаю что без переделки прошивки Вы сможете снять видео более быстрее... т.к. сами понимаете,пока камера сняла,пока закешировала,пока отдала RTSP...
Собственно для IP систем лаг в неск секунд - вполне нормально для передачи по сети. насколько я знаю модули распознавания крупные вендоры щас встраивают напрямую в камеры...
Ну или по старинке - отдают видеорегистратору поток а он уже разгребает.
А в чем проблема с задержкой в неск секунд? это разве не приемлемо?
Ответ написан
Комментировать
A_M
@A_M
Основная специализация - системы видеонаблюдения
Для передачи видео через интернет 2-3 - приемлемое значение, со всеми оптимизациями синхронизацию менее 1 секунды вы не получите.
Прежде чем отбрасывать rtsp, научитесь его готовить.
1. Проверьте настройки буферизации на принимающей стороне. В VLC, например, буфер по умолчанию несколько секунд.
2. Интервал I-frame. Настройка кодека h264, отвечающая за межкадровое сжатие. При частоте кадров 25, несколько ускоряет установка длины gop-группы 5. Но это наращивает трафик или ухудшает качество видео при сохранении битрейта.
3. Ну и используйте передачу по udp.
Ответ написан
Комментировать
@mordo445
Если решается задача критичная к времени выполнения (что то промышленное например) то CCTV камера не ваш выбор, задержка зачастую нарастает до 1 секунды еще на этапе обработки видео дохленьким SoIC-ом, при формировании контейнера, потока. Илья Ефимов всё правильно сказал про буферы и интервал I-frame, добавлю что буфер есть и на стороне камеры, и в нем в зависимости от богатства фантазии разработчика лежит либо очередь B и M кадров и прочего длиной до предыдущего I, или просто 32 кадра всегда, или до пары I кадров назад -- для того что бы всякая видеоаналитика и обработка качества работала и не жрала память дважды. На каких то камерах этот параллелится и не влияет на буферизацию, на других значительно снижает задержку отключение совсем, как возможности детектора движения, улучшения изображения (3dnr и проч должно выполнятся на raw видео но ничто не мешает удешевить DSP китайцам), всех видов "интеллектуальной видеоаналитики", ватермарки и OSD. Можно улучшить до 1 сек. Ну и выбирайте UDP, как правило в вызов RTSP надо добавить конструкцию, определенную для вашей камеры, они гуглятся, чаще всего в описаниях SDK или протоколов интеграции что суть то же самое
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы