Видеонаблюдение, наблюдения
Видеонаблюдение, наблюдения.
Здарова народ. Решил немного поделиться мыслями про видеонаблюдение. Не являюсь профи и вообще специалистом. Просто 7 лет живу в частном доме
и ради интереса балуюсь установкой камер наблюдения на участке. Не то чтобы они нужны, но очень интересно :)
Перепробовал огромное количество NVR систем, разные камеры, от дешевых до дорогих, в итоге пришел к тому что оставил камеры только одного бренда.
В моем случае это Hikvision. Удобно когда все настройки устроены по одной схеме.
Теперь к сути поста: Всегда хотелось, чтобы писались только важные события, но если вы имели дело с камерами то знаете что встроенные системы детекции движения всегда глючат в каких либо условиях.
Или это снег, или это тень от деревьев или пауки плетут паутину под теплыми лучами IR подсветки. Всего этого хотелось избежать. Вариант один - детекция объектов на основе нейронок.
В очередной приступ перфекционизма, когда увидел что за сутки записано несколько лишних гигабайт - лезу в интернет в поисках решения проблем.
Оказывается уже давно существует классный проект Codeproject AI, то что доктор прописал. Поиск на изображении объектов/номеров авто/даже face detection присутствует.
Дело за малым, прикрутить это всё к своим камерам. Первый, и самый логичный способ - это найти уже готовую систему работающую с этим API. И такие находятся
1)Agent DVR, бывший iSpy написанный на .NET одна из самых мощных и бесплатных систем видеонаблюдения, с одним маленьким но сука жирным минусом. Она жрет столько ресурсов, сколько ещё не придумали. Проц (6900hx)
полностью забит под 100% и с трудом справляется даже с 3-4 камерами, а у меня их 8.. Нафиг, выкидывам
2) Blue Stack, очень популярная на западе система , стоит не дорого. Готов был купить, но нам чуркам не продают. Поэтому были посланы. Хотя потестировал крякнутую. 8 Камер с детекцией тоже не вытягивают.
Были ещё варианты разной степени готовности и сырости, например Fregate , но хотелось чего то лёгкого воздушного особенного (как в анекдоте про водку.)
Ну что же, вызов брошен, решил сделать что-то своеё. Расчехлил вижуал студио. Забрёл на github в поисках отдельных компонент того что мне нужно.
Первое - это считать RTSP потоки с камер.
Находим замечательную либу https://github.com/BogdanovKirill/RtspClientSharp
От, возможно нашего соотечественника Богданова Кирилла, если ты тут - респект и уважуха :)
Эта библиотека позволяет вытащить потоки и получить отдельные кадры из видео.
Дальше мы эти кадры засылаем на ранее упомянутый Codeproject AI.
Он нам присылает данные о том что на изображении имеется. Люди, котики, лисы, авто итд.
Получаем данные и решаем что писать в файл что нет. Если на кадрах интересующие нас объекты - мы сохраняем картинки , которые потом, в конце дня с помощью ещё одной замечательной либы ffmpeg сохраняем отдельным суммарным видео за сутки.
Пример:
Вроде всё класно всё хорошо, но хочется большего. Например получать в телеге информацию о том что соседский котик подкрался незаметно. Или узнать когда машина с определенным номером проезжает мимо.
Не то чтобы котик, больше Лиса, но тоже сойдет :)
Цепляем ещё одну замечательную либу с телеграм ботом и получаем сразу оповещения в телефоне.
Получилось не совсем то что я хотел. Мой NVR продолжает писать видео по любому чиху параллельно. Но в основном всё что мне интересно я получаю в телегу. Где могу и видео последнее посмотреть и быстро получить изображение с камеры. Система у меня крутится на винде, на небольшом миниPC minisforum 6900hx, общая наргузка на систему (NVR плюс моя утилита) не первышает 20% Если кому интересен такой вариант - готов поделиться.
Далее, тем кто дочитал конкретика:
Софтина:
Писана для себя, поэтому с вероятностью 50% заработает у вас, но готов допилить дострогать.
Что нужно установить дополнительно:
Codeproject AI:
Download windows installer.
Можете ставитьна любую машиниу, хоть на винду хоть на линукс,докер итд.. Главное чтобы был включен Object Detection (YOLOv5 .NET)
Далее качаете FFMPEG
должна стоять на той же машине. В конфиге надо прописать путь к bin папке
Затем телега..
Идете в телегу к @botfather регестрируете своего бота, получаете ключ и вписываете его в конфиг
Затем гуглите как узнать свой ID в телеге , и вписываете его тоже в конфиг приложения. В конфиге есть два списка
- один это кому присылать постоянно уведомления, второй это кто просто может запрашивать видео и изображения с камер.
Далее заполняете конфиг, вбиваете данные RTSP каналов (вбивайте каналы в высоком качестве, прога сама жмет при запросе к AI)
Всё должно заработать, ну с вероятностью 50% :)
ЗЫ: За стиль изложения прошу простить, пишу в пьяном угаре, 2 месяца сидел в бане в пикабу, да и лето кончается, шашлык сам себя не выпьет :)