4093

Видеонаблюдение, наблюдения

Видеонаблюдение, наблюдения.

Здарова народ. Решил немного поделиться мыслями про видеонаблюдение. Не являюсь профи и вообще специалистом. Просто 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.

https://www.codeproject.com/Articles/5322557/CodeProject-AI-...

Он нам присылает данные о том что на изображении имеется. Люди, котики, лисы, авто итд.

Получаем данные и решаем что писать в файл что нет. Если на кадрах интересующие нас объекты - мы сохраняем картинки , которые потом, в конце дня с помощью ещё одной замечательной либы ffmpeg сохраняем отдельным суммарным видео за сутки.

Пример:

Вроде всё класно всё хорошо, но хочется большего. Например получать в телеге информацию о том что соседский котик подкрался незаметно. Или узнать когда машина с определенным номером проезжает мимо.

Не то чтобы котик, больше Лиса, но тоже сойдет :)

Не то чтобы котик, больше Лиса, но тоже сойдет :)

Цепляем ещё одну замечательную либу с телеграм ботом и получаем сразу оповещения в телефоне.

Получилось не совсем то что я хотел. Мой NVR продолжает писать видео по любому чиху параллельно. Но в основном всё что мне интересно я получаю в телегу. Где могу и видео последнее посмотреть и быстро получить изображение с камеры. Система у меня крутится на винде, на небольшом миниPC minisforum 6900hx, общая наргузка на систему (NVR плюс моя утилита) не первышает 20% Если кому интересен такой вариант - готов поделиться.

Далее, тем кто дочитал конкретика:

Софтина:

https://eruditoffline.ru/nvrminitelebot.zip

Писана для себя, поэтому с вероятностью 50% заработает у вас, но готов допилить дострогать.

Что нужно установить дополнительно:

Codeproject AI:

https://www.codeproject.com/Articles/5322557/CodeProject-AI-...

Download windows installer.

Можете ставитьна любую машиниу, хоть на винду хоть на линукс,докер итд.. Главное чтобы был включен Object Detection (YOLOv5 .NET)

Далее качаете FFMPEG

https://ffmpeg.org/download.html

должна стоять на той же машине. В конфиге надо прописать путь к bin папке

Затем телега..

Идете в телегу к @botfather регестрируете своего бота, получаете ключ и вписываете его в конфиг

Затем гуглите как узнать свой ID в телеге , и вписываете его тоже в конфиг приложения. В конфиге есть два списка

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

Далее заполняете конфиг, вбиваете данные RTSP каналов (вбивайте каналы в высоком качестве, прога сама жмет при запросе к AI)

Всё должно заработать, ну с вероятностью 50% :)

ЗЫ: За стиль изложения прошу простить, пишу в пьяном угаре, 2 месяца сидел в бане в пикабу, да и лето кончается, шашлык сам себя не выпьет :)

UPD:

Последние файлики поставить 03 и накатить сверху 04

https://eruditoffline.ru/nvrminitelebot_03.zip

https://eruditoffline.ru/nvrm_04.zip

Вы смотрите срез комментариев. Показать все
2
Автор поста оценил этот комментарий

Ну уж добить тему тогда. Берем субпоток с низким битрейтом и на нем детектим что надо. Параллельно в кольцевой буфер в памяти пишем основной поток (5-10 сек). Если нужное событие случилось- скидываем буфер на диск и основной поток следом. Пишем или по таймеру или до прекращения события. Так аналитика не будет жрать ресурсы и при этом в архиве будет только нужное.

раскрыть ветку (11)
2
Автор поста оценил этот комментарий

Так и есть только нет смысла брать поток с низким битрейтом.   Сжатие битмапки на запрос в AI занимает считанные миллисекунды, зато в памяти всегда хороший снапшот.  И буффер для предварительной записи тоже есть.

Забыл описать. в конфиге указывается путь для буффера. Я использую РАМ диск, чтобы не нагружать SSD лишними данными.  Завтра протрезвею, если появятся вопросы по существу - проясню ситуацию :)

раскрыть ветку (10)
0
Автор поста оценил этот комментарий

Ну я вообще предполагаю, что скорость обработки кадра 6М и кадра типа 720p - будет значительно отличаться. В trassir именно так и сделано. Говорят, что субпотока достаточно, что бы найти нужное. Тем более, его можно настроить отдельно от основного и значительно уменьшить кол-во кадров. Просто когда потоков станет несколько десятков, каждая ms будет на счету :)

Насчет ram диска не уверен - его же надо создать предварительно? Да и файловая система там - лишний слой. А так программа под каждый поток выделяет память и пишет его по кругу.

раскрыть ветку (9)
1
Автор поста оценил этот комментарий

У меня в конфиге есть коэффициент, во сколько раз сжать картинку, прежде чам заслать на распознавание.  Это гораздо быстрее чем тащить два потока из сетки.  Мне же все равно приходится буфферизовать поток в хорошем качестве, соответственно данные и так есть.


Насчет ram диска не уверен - его же надо создать предварительно?

Это да, можно было в памяти хранить. Но решил сделать через отдельный диск. (он может быть не обяазтельно рам), никто же не знает какой объем захочется буфферизовать, сколько там камер будет. Может их вообще будет 50 а рама не хватит, тогда буффер можно просто на отдельный ССД закинуть.  Но в целом вещь конечно обсуждаема, я не настаиваю :)

раскрыть ветку (8)
0
Автор поста оценил этот комментарий
У меня в конфиге есть коэффициент, во сколько раз сжать картинку, прежде чам заслать на распознавание. Это гораздо быстрее чем тащить два потока из сетки. Мне же все равно приходится буфферизовать поток в хорошем качестве, соответственно данные и так есть.

А разжимать его перед этим не требуется? Т.е. получается: разжать, сжать, обработать или разжать и обработать. С учетом того, что у субпотока битрейт низкий, его дополнительная передача по сети не несет больших накладных расходов. У меня к примеру на 16 камер основной поток порядка 130Гб/день, а субпоток - 30Гб/день.

никто же не знает какой объем захочется буфферизовать, сколько там камер будет. Может их вообще будет 50 а рама не хватит, тогда буффер можно просто на отдельный ССД закинуть. Но в целом вещь конечно обсуждаема, я не настаиваю :)

Обычно, буфер предзаписи это 5-10сек. Больше не требуется. Соответственно, сжатый в тот же h265 поток 6M с высокой сложностью сцены будет порядка 1Мбайт/с. Выделить даже 10М буфер в памяти под каждый поток в наше время не стоит ровным счетом ничего :) Сервак с 32-64Гб на борту - обычное дело. SSD просто быстро устанет в таком режиме - надо покупать MLC, а это дорого. Обычно SSD используется в таком качестве, когда надо иметь отказоустойчивость и возможность восстановить содержимое буфера при сбое.

раскрыть ветку (7)
1
Автор поста оценил этот комментарий
А разжимать его перед этим не требуется?

всё равно надо, если например номер надо распознать. Или получить кадр в телегу. У меня время с запроса до полученя кадра - занимает пару секунд. Тоже самое через HA уже секунд 10.  Понятно что фигня с точки зрения мировой революции, но хочется то прям быстро здесь и сейчас :)


Обычно, буфер предзаписи это 5-10сек. Больше не требуется. Соответственно, сжатый в тот же h265

У меня 4К идет variable до 8мегабит.. Но вообще да - можно заморочиться и хранить в памяти.  Никаких проблем, но решил через отдельный диск. 

раскрыть ветку (6)
0
Автор поста оценил этот комментарий
У меня время с запроса до полученя кадра - занимает пару секунд. Тоже самое через HA уже секунд 10.  

Хмм.. Что-то я немного не понял. Кадры для анализа не напрямую из rtsp потока берутся? Запрос одного фрейма через http api камеры? Это очень медленно. Я думал берется прямой поток и уже из него дергаются кадры.

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

У меня напрямую. .берется поток - декодирутеся фрейм. если через HA делать то по запросу там идет сначала коннект к потоку потом запрос потом декодирование.

У меня всегда в памяти адекватный кадр и по запросу через телеграм бота я сразу же шлю ответ. Вся задержка это только отсылка на апи телеги.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

А, ну если напрямую с камеры - тогда ок, только не понятно почему от запроса до получения кадра пара секунд? Может имелось ввиду миллисекунд?

Вообще, по идее все эти процессы аналитики, обработки запросов и прочее - всё должно быть в разных тредах и работать асинхронно. Т.е. один тред тащит поток и пишет его в буфер, другой - занимается аналитикой (смотрит в буфер), третий по запросу из того же буфера отдает картинки в телегу. Четвертый по сигналу пишет буфер на диск. Тогда по идее никто никому не будет мешать и всё будет работать очень быстро.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Мы видимо не поняли друг друга.

Что касается кода, то он получает фрейм в реалтайме. 50мс надо чтобы распознать объекты.

А дальше отправкав телеграм бота.

Итого, запрос с телеги, получить текущий кадр, выслать.


Home assistant и другие системы работают не так.

Там идет запрос с телеги, потом прога на питоне коннектится к ртсп. Если там не iframe то надо подождать. После этого идёт отсылка. В итоге 10-20 секунд. За это время басурманин уже сбежит :))

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

А, понял. Это про разные вещи. А у меня чего-то смешалось в голове :) Пора на боковую, а то мозг скоро отключится :)

Ну в любом случае - удаче в разработке. Порекомендовал бы еще глянуть как работает trassir - можно у них хороших идей позаимствовать. Мне особенно нравится механизм раскидывания блоков потока по разным дискам - когда один диск вылетает, теряется не сплошной кусок, а получается решето, но смотреть можно :)

раскрыть ветку (1)
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества