Все мы знаем эту историю - вы потратили много времени и денег на существующий сетевой видеорегистратор. Команда разработчиков создавала его на протяжении многих лет. Он построен на самых разных технологиях - все началось с .NET, а затем вы куда-то добавили Node.js, чтобы идти в ногу со временем. Он солидный, стабильный, работает, но старый и скучный. Мир продвинулся вперед со сверточными сетями, социальными графами и многим другим, и вы застряли со стабильным бегемотом, который был потрясающим в свое время, но сейчас просто слоняется, как раненый лев, поскольку новые стартапы придумывают что-то за несколько недель что, по словам ваших разработчиков, на создание прототипа вашего бегемота уйдет 6 месяцев.

Итак, мы построили Озон. Давайте поговорим о том, как мы можем расширить существующий сетевой видеорегистратор и добавить некоторые удивительные вещи, которые предлагает oZone, не заменяя всю чертову вещь. Возьмем очень популярный сетевой видеорегистратор ZoneMinder. Надежный, стабильный, широко развернутый и разработанный много лет назад стек, который нелегко расширить. Люди давно просят об обнаружении лиц. Несколько лет назад была предпринята попытка создать структуру плагинов для этой системы NVR - невероятные усилия, но невероятно сложные. Если добавить плагин так сложно, вы не можете обвинять разработчиков в том, что они отказываются.

Итак, давайте посмотрим, как мы можем решить эту проблему с помощью oZone: «Как добавить обнаружение лиц на основе свертки» в ZoneMinder «без замены моих рабочих настроек» и « убедиться, что я продолжу использовать остальную часть системы? »

Последняя часть важна - «убедиться, что я продолжаю использовать остальную часть системы» - все сетевые видеорегистраторы поставляются со знакомым интерфейсом, системой хранения, системой уведомлений / предупреждений и т. Д. al. Вы хотите и дальше использовать этот интерфейс и систему, просто «волшебным образом добавляйте новые украшения».

Есть два способа решить эту проблему:

Один из подходов может заключаться в том, что мы напишем приложение на oZone, и оно будет указывать прямо на камеру. Ваш NVR продолжает работать, oZone продолжает работать, и каждый делает свое дело. Но это не то, что вам нужно. К тому же дьявол кроется в деталях - многие камеры не поддерживают одновременную потоковую передачу. Кроме того, вы хотите, чтобы oZone был привязан к «существующему сетевому видеорегистратору», например:

как нам это сделать? Что ж, помните, в oZone есть концепция провайдера, который может получать данные из любого источника? Так что, если бы мы могли написать провайдера, который подключался к вашим изображениям NVR, творил свою магию внутри oZone, а затем каким-то образом уведомлял ваш NVR, чтобы он начал запись, когда он обнаруживает лица? Идеально.

Как оказалось, все сетевые видеорегистраторы имеют две важные функции:

  1. Работающий буфер изображений он продолжает записывать независимо от того, обнаруживает он или нет. Почему? Потому что, когда происходит обнаружение, вам нужно начать запись на несколько кадров назад, потому что к тому времени, когда будет обнаружено движение и ваш NVR начал запись, объект, возможно, переместился, и вы получите запись, которая ничего не показывает!
  2. Все сетевые видеорегистраторы также имеют средства запуска записи. Почему? Потому что существует множество интеллектуальных устройств IOT, к которым им необходимо подключиться - «начать запись, если API термостата Nest что-то обнаруживают» или «начать запись, если оконный детектор обнаружил разбитие стекла» и т. Д.

Идеально. Это все, что нам действительно нужно. Итак, вернемся к ZoneMinder. ZoneMinder реализует свой рабочий буфер с использованием общей памяти. Итак, все, что нам нужно было сделать, это написать провайдера, который подключался к этому буферу. Затем мы посмотрели, как работает триггерная система ZoneMinder, и только что написали класс Trigger для ZoneMinder в oZone.

Итак, теперь это так:

Прелесть oZone в том, что «провайдеры» на самом деле являются «клеем» к ЛЮБОМУ интерфейсу. Абстрагируйте его, подключите к своей системе, и oZone сразу же начнет работать!

Очевидно, мы также должны рассказать вам код, который мы написали для расширения ZoneMinder, чтобы добавить обнаружение лиц.

Посмотрите на код. Его крошечный. Плюс мы сделали больше! Мы также добавили возможность для пользователя запускать браузер и напрямую подключаться к плагину oZone для анализа лицевых прямоугольников и т. Д. Мы также добавили закомментированный код, чтобы показать вам, как переключить его на определение произвольной формы, применить видео фильтры и т. Д. Мы сделали это, потому что все, что нужно для добавления функциональности в oZone, - это «зарегистрировать компонент» в цепочке функций и позволить каждому делать свое дело. 2 строки на функциональность.

И после того, как мы это сделали, внезапно существующий интерфейс ZoneMinder начал отображать расширенное обнаружение событий с использованием oZone, при этом придерживаясь своего знакомого интерфейса.

Здесь вы видите события, которые были записаны в NVR благодаря только что написанному плагину oZone. Тот же интерфейс. Знакомое ощущение.

Более того, все это прозрачно и для мобильных приложений!

На скриншоте выше показано, как мобильное приложение ZM (zmNinja) использует oZone для отображения событий при обнаружении лиц. И это отличный пример того, как помогает улучшенное обнаружение - представьте, что вы обнаруживаете капли внутри дома с множеством постоянно движущихся объектов (телевизор и т. Д.). Вас засыпают ложными тревогами!

ТАК ПОЧЕМУ ЖДАТЬ? ЗАХВАТАЙТЕ ОЗОН И ДАЙТЕ НОВУЮ ЖИЗНЬ СВОЕМУ СТАРУМ NVR