Приветствую всех хабрчан! Ранее я уже публиковал статью про разработку программного обеспечения для камер видеонаблюдения. В статье рассказывал через что нам с коллегами пришлось пройти и с какими трудностями мы столкнулись. Мы проделали долгий тернистый путь от рождения Nexus, когда набивали шишки, к Рувер — созданную полностью с нуля прошивку. Фактически я участвовал в разработке четыре раза с чистого листа, приобретая опыт от чипов HiSi до Mstar. Когда понимал, что разработка уперлась в стену, то несколько раз приходилось менять архитектуру с нуля. Сегодня это полностью отечественная прошивка без каких‑либо «черных ящиков» от китайских компаний, прошивка, исходные коды которой, коллеги с легкостью готовы передавать в 8-й центр ФСБ для исследования на отсутствие недекларированных возможностей.
Прошивка Рувер вышла в релиз. И я готов с гордостью рассказать вам о новом функционале ПО.
Новые фичи
Ниже будут перечислены фичи с кратким описанием и применением. Конечно, многие из них являются стандартными для «породистого» оборудования видеонаблюдения, и я это хорошо понимаю. Но в любом случае список функций и опций будет постепенно увеличиваться, развитие прошивки не останавливается, и приоритеты расписаны на год вперед. Однако, приоритеты двигаются, если какой‑либо Заказчик остро нуждается в какой-либо специфической функции, которую приходится поднимать в приоритет.
Стабильный поток
Одной из приоритетных задач было создание идеального стабильного потока. Была поставлена цель — опередить именитых конкурентов из Азии. И эта цель была достигнута! Был достигнут стабильный поток благодаря инновациям НИЦ «Технологии», и теперь в этом вопросе крупнейшие азиатские бренды остались позади.
IRIS
Некоторым заказчикам очень важно наличие функции IRIS (автодиафрагма), позволяющей камере автоматически изменять размер отверстия диафрагмы при изменении освещенности сцены. Конечно, для некоторых специалистов в сфере видеонаблюдения этот функционал может показаться ненужным. Но у каждого заказчика есть свои требования и условия эксплуатации камер. IRIS в видеонаблюдении вполне применим, здесь многое зависит от того, под какой объект и с каким техническим заданием необходимо создавать систему безопасности. Теперь будет возможность заказывать в конфигураторе производства камеры с опцией DC-IRIS: https://www.electronic-machines.ru/configurator/ip-kamery. В скором времени обновится конфигуратор производства для заказчиков!
А еще есть фича, что видео в веб-морде камер можно просматривать в любых браузерах! Это не особое ноу-хао, но тем не менее, хотелось сделать это удобным для пользователя.
ROI
Функция ROI для ip камер позволяет выбрать на изображении конкретные области интереса, в которых поток будет сжиматься с более высоким качеством, чем изображение вне зонах интереса. В случаях повышенной активности в кадре, когда камере не будет хватать битрейта, ROI оптимизирует поток так, что качество потока в выделенных зонах будет наилучшим.
Режим коридора
Коридорный режим в камерах позволяет менять изображение на вертикально-ориентированный формат с подходящим соотношением сторон (9:16, 3:4). Коридорный формат удобен для ряда локаций — просмотра длинных коридоров, периметра промышленного предприятия (забора) или тоннелей метро. Фактически вот, что происходит при переходе в коридорный формат — вертикальные и горизонтальные углы обзора меняются между собой, и, соответственно, камера «видит» больше по вертикали и меньше по горизонтали. В результате, при использовании коридорного формата на прямых участках периметра, коридора, тоннеля и т.п. можно сэкономить на количестве камер, т.к. при данном режиме работы существенно уменьшается слепая зона. Но за это придется заплатить уменьшением обзора по горизонтали.
Раздельные настройки режима день/ночь
Также было реализовано два независимых набора настроек, один для дневного режима съемки, второй для ночного.
Ночные и дневные настройки для камер видеонаблюдения резко отличаются: если в дневное время камерам необходимо бороться с избыточной яркостью, а также возможными пересветами изображения, то ночью необходимо выдавать изображение с минимальным количеством шумов и высокой детализацией. Два набора настроек позволяют получать оптимальное изображение и в дневное, и в ночное время. Достаточно выставить оба комплекта настроек согласно условиям эксплуатации, а также задать расписание работы для системы переключения между двумя режимами.
Я рекомендую использовать автоматическое переключение. При нем камера будет переключаться в зависимости от уровня освещенности, используя специальный датчик, и подстраиваться под текущие условия смены дня и ночи. Однако для специфических сцен (например, нужно видеть номер автомобиля с включенными фарами ночью) настоятельно рекомендую проводить более тонкую настройку.
Адаптивная ИК-подсветка
В камере появилась функция адаптивной Ик-подсветки, где камера самостоятельно может управлять мощностью диодов. С помощью адаптивной ИК-подсветки можно избавиться от сильного пересвета объекта в кадре за счёт уменьшения её мощности.
Также была добавлена для пользователя возможность выбора мощности подсветки. Менять мощность можно с помощью передвижения ползунков в интерфейсе.
Детектор пересечение линий
Детектор пересечения линий является аналитической функцией. Данная функция позволяет нарисовать виртуальную линию при пересечение которой будет осуществляться один из выбранных сценариев в камере: вывод сообщения в OSD, перевести камеру в день, перевести камеру в ночь.
Детектор движение
Детектор движение также является аналитической функцией. ПО Рувер фиксирует изменение в кадрах и идентифицирует движение. Можно также задать на экране зоны детекции движения, чтобы фиксировать их в строго заданных на экране областях и исключить триггеры в нерелевантных для клиента местах.
Режим 60 кадров
В 8 мп камерах появилась возможность работы с 60к/с. Данная функция хорошо подходит для ускоренной съёмки. Её используют для получения эффекта замедленного движения. К примеру для аналитики распознавания номеров на скорости это функция будет очень полезной.
Настройка групп учетных записей
Разработчики реализовали расширенную настройку групп учетных записей пользователя. Теперь можно управлять правами пользователей с разными настройками доступа. Количество учетных записей без ограничений.
Поддержка кодека Opus
Аудиокодек Opus в нашем ПО открывает новые возможности. Теперь оператор может услышать весь звук с микрофона прямо в веб-и��терфейсе. Также данный аудиокодек обладает рядом преимуществ:
Адаптация к изменению пропускной способности канала.
Качество звука остаётся неизменным, а кодек частично компенсирует потери, обеспечивая трансляцию без сбоев.
Низкий уровень задержки. Кодек обеспечивает практически не ощутимую задержку (26,5 мс).
Выделение речевой информации из общего аудиопотока. Это позволяет расходовать пропускную способность канала максимально эффективно.
Восстановление данных в случае потерь на плохих каналах. Кодек использует стандартизованную методику FEC (Forward Error correction) для исправления сбоев и ошибок при передаче данных.
Высокая производительность на различных архитектурах. Кодек работает хорошо даже на мобильных устройствах с процессорами ARM.
Улучшен режим мультикаста
Режим мультикаста — это способ передачи видеопотока, при котором камера отправляет данные одновременно нескольким получателям (например, серверам или клиентам) через одну передачу в сети. Вместо создания отдельного соединения для каждого устройства, мультикаст оптимизирует использование сетевых ресурсов, уменьшая нагрузку на камеру и сеть. Это особенно важно при работе с несколькими мониторами, серверами записи или системами аналитики, обеспечивая масштабируемость и стабильность системы видеонаблюдения.
Режим мультикаста теперь работает по всем принятым стандартам. Можно передавать данные, не перегружая систему. Для некоторых особых заказчиков теперь мультикаст работает не только канонично по Any Source или Specific source multicast, но также как у всеми нами любимых камер Axis.
Безопасность ip камер — хорошие пароли
Одним из самых уязвимых звеньев в системах безопасности является слабый пароль ip камеры, который стоит по дефолту, и с «рождения» никогда не меняется. Но это тема отдельной статьи. В Рувере не будет простых паролей, система будет требовать сложные. Теперь никаких admin, qwerty, 12345 и прочих.
Стандарт Open API
Также была внедрена Open API, чтобы заказчик смог интегрировать ПО «Рувер» под свои системы быстро и удобно.
Поддержка ГЛОНАСС
Поступила задача от Заказчика — и я с коллегами развели модуль, написали небольшое ПО и интегрировали его в прошивку Рувер. Теперь в камеры можно встраивать модуль ГЛОНАСС. Теперь они могут подключаться к спутникам, а в интерфейсе выводятся точные географические координаты и абсолютно точное время. Благодаря подключению к системе ГЛОНАСС камеры можно использовать на флоте и на железнодорожных составах, в этих сферах, как вы понимаете, навигация имеет важнейшее значение. Также видеоматериал с можно смело использовать в качестве доказательств в суде — подлинность видеозаписи устанавливают в соответствии с местом установки камеры и ее координатами в строке оверлея. Прохождение метрологии впереди.
Поддержка 4G
Пришел запрос от потенциального заказчика — и он был реализован. Я спроектировал небольшой модем, коллеги написали к нему прошивку, интегрировали в прошивку Камер и в конфигурацию электронных модулей камер. Камера видеонаблюдения с 4g — это современные реалии. Кстати, хотим напомнить, что в камерах «Рувер» есть раздел для сим-карт, чтобы клиенты смогли передавать данные по мобильной связи. Опция в скором времени будет доступна в конфигураторе: https://www.electronic-machines.ru/configurator/ip-kamery.
Фиксирование логов камеры
В камерах теперь появилась функция логирования, которая позволяет быстрее разбираться с проблемами если они возникают на камере. Но данная функция закодирована и будет передаваться специалистам технической поддержки для детального изучения.
Отображение сессий
С помощью отображения сессий оператор может отслеживать кто на текущий момент использует камеры и с какого ip адреса.
Наше ближайшее будущее
В ближайшем релизе планируется реализация следующих функций:
Добавится протокол https.
Сделается стандарт IEEE 802.1X.
Реализуется детально настраиваемое изображение в интерфейсе.
Внедрится интеграция сенсоров 2/5/8,12 MP от Starvis 2 в Global Shutter.
С какими проблемами пришлось столкнуться
Разработка собственного ПО всегда затрагивает множество проблем. Сложность разработки программ у каждой команды может касаться абсолютно разных вещей. Я хочу поделиться своим опытом, с чем мы столкнулись и что мы преодолели.
Проблемы в коммуникации
Одной из основных проблем является непонимание. Порой мне приходилось работать без четких требований к конкретному результату, когда нужно было реализовать что-то, но не сообщалось, что в итоге должно быть. Также иногда в разработке работа велась с ориентиром на обратную связь. В целом, часто не хватало четкого технического задания, на которое можно было бы опереться.
Решение проблемы импорта/экспорта настроек
Реализация импорта/экспорта настроек — довольно сложная вещь. Для разработки этого функционала нужно было затронуть весь проект на 100%. Важно было предусмотреть обратную совместимость с прошлыми и будущими версиями. Плюс есть множество нюансов, которые зависят от конкретной платформы. Например, камеру нужно перезагрузить перед применением какой-нибудь настройки, а значит экспорт данного параметра нужно сделать в последнюю очередь и как-то предупредить пользователя. Такие вещи могут отличаться от платформы к платформе и нужно найти универсальное решение.
Управление подсветки по яркости изображения
Эту фичу тоже было очень тяжело реализовать. Основная проблема заключалась в том, что не было возможности получить нормальное освещение без ИК-подсветки. Если включается ИК-подсветка, то изображение становится ярче, а хотелось бы получить освещение без учета подсветки. Подсветка должна работать от уровня освещенности, но когда её активируешь, то приложение считает, что стало светло, а на самом деле это освещение от подсветки. Мне пришлось попотеть над тем, как учесть яркость с которой светит подсветка. Если не учитывать подсветку, то приложение будет думать, что после смены режима ночь сразу настал день и так по кругу.
Вывод
Я горжусь результатом длительной работы — продуктом, который клиенты оценят по достоинству. Но разработка также обозначила проблемы в процессах, которые я обязательно буду улучшать вместе с другими отделами.