77

Ещё 1 регистратор для видеонаблюдения

Хочу рассказать про видеорегистратор который мы с друзьями писали последние 2 года, почему мы это начали и куда движемся.

Ещё 1 регистратор для видеонаблюдения

Для тех кому лень читать и он хочет сразу потыкаться ссылка на сайт

Там есть ссылки на документацию с инструкциями как установить, а так же демо видео обзор возможностей.


Немного обо мне.

Я работаю инфраструктурным инженером, в быту DevOps. Начинал своё путешествие в мир IT из тех. поддержки интернет провайдера, затем работал в системным администратором на местном телеканале, в тот период очень активно изучал linux, писал скрипты на баше, в силу специфики предприятия(тв канал) познакомился с такой прекрасной утилитой, как ffmpeg. Я был поражён на сколько это крутой софт для работы с любым медиа контентом. Это можно считать точной отсчёта примерно 2016-год.


Путь к идее.

Примерно 2,5 года назад мой друг открыл магазин автозапчастей и встал вопрос организации видеонаблюдения. Хотелось что бы доступ к видео был с любого устройства, архив можно скачать любого промежутка, и естественно всё бесплатно. В общем то не очень много требований.

Так повелось, что все технические вопросы он задавал мне и я пошёл изучать этот рынок. Пошёл смотреть что там есть на алиэкспресс из готовых недорогих железок. Сначала обрадовался, железные решения были очень бюджетные, но поняв, что софт там на уровне 2003-го (а на дворе был уже 2017), обязательно нужен internet explorer и использование ActiveX вкладку с алиэкспресс я закрыл )

Начал гуглить что есть готового софтового, естественно первое что приходит на ум это zoneminder , нашёл даже сразу сборку в докере, запустил, открыл и .... полное разочарование.

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

Дальше я пробовал и ставил всё, что нагуглил, все решения, опенсорсные, проприетарные, любые.

В итоге из всего, что я попробовал мне понравилось 2 решения это Flussonic Watcher и shinobi.

Flussonic Watcher - NVR российской разработки, написан на erlang, работа с транспортом видео реализована самостоятельно. Это крутой софт! У флюсоника работа с архивом сделана так как я себе её и представлял в идеале, кто то уже сделал то, что я придумал себе в голове ) Но это платное решение при том достаточно дорогое, по этому от него я отказался. Но очень вдохновился.

Sinobi - это Open-Source проект, написан на nodejs, работа с транспортом видео реализована при помощи ffmpeg. Этот проект выглядел как что то, чем сможет пользоваться обычный человек. Но всё же интерфейс кажется слишком перегружен, да и стабильность работы в 2017-м оставляла желать лучшего. Я запарковал камеру оставил на 1 час, через час картинка просто зависла и в архив писался бесконечный стоп кадр. Про процесс добавления нового потока, я вообще молчу )


В итоге меня ничего не устроило, я просто написал несколько скриптов на баше, ffmpeg забирал с камеры поток в RTSP, добавил docker, посолил nginx и на выходе получил что то работающее. Запустил это на домашнем сервере(старый комп который стоит за холодильником), запустил и оно работало !  Кажется это можно считать прототипом нашего будущего видео регистратора и выглядело это вот: https://cam1.yuccastream.com/ https://github.com/yuccastream/cam1


Понеслась.

Я рассказал о своей идее сделать собственный видеорегистратор друзьям. Ребята приняли идею с энтузиазмом. Обсудили перспективы и возможности. Да и просто было интересно сделать что то своё и классное )  И мы начали работу.

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

Но время шло, код писался, и начало вырисовываться что то, что уже можно показывать людям.

Цель была почти та же, что и при запросе моего друга с автомагазином: "можно запарковать любую ip камеру, доступ к видео с любого устройства, архив можно скачать любого промежутка, и естественно всё бесплатно".

К определённому моменту мы поняли, что достигли этой цели и тут я хочу показать несколько демо как это выглядит.

Вот так выглядит добавление новой камеры:

Так как для транспорта мы используем ffmpeg, на входе может быть почти любой протокол.

Единственное ограничение, видео должно быть в кодеке h264, в этом кодеке пишут 100% всех современных ip камер, так что не очень то и ограничение.


Вот так выглядит работа с архивом:

Согласитесь интуитивно ? Почти как в ютубе )


Как установить к себе ?

Тут всё просто вам нужен любой современный linux, где можно запустить docker, или MacOS.

Есть сборки под Raspberry pi.

Возможно в будущем появится поддержка windows, но сейчас с этим проблемы.


Есть платная версия.

Yucca - это не открытое программное обеспечение (

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

У есть 2 версии FREE и ENTRPRISE.

FREE - бесплатна и имеет весь необходимый функционал для организации видеонаблюдения в организации или дома.

ENTRPRISE - платная подписка, имеет функционал который может быть интересен большим компаниям или провайдерам услуги видеонаблюдение. Тут есть разграничение прав по пользователям, брендирование и список будет пополнятся.


Контакты

Сайт:  https://yucca.app/

У нас есть чатик у телеграме, если кто заинтересовался и есть вопросы, то вот ссылка.


P.S.: если где опечатка или лишняя запятая, пишите )

Лига слаботочников

1.2K постов10.8K подписчиков

Правила сообщества

Запрещено нарушение основных правил пикабу, оффтоп и замыкать + на - при включенном источнике питания

0
Автор поста оценил этот комментарий

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

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

Детекция движения при поддержке со стороны камеры будет в 0.5.0, алерты наверное тоже там же приедут.

0
Автор поста оценил этот комментарий

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

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

Мы работаем только с юр. лицами, ценообразование разное. Сейчас сайт на доработке, как доделаем, повесим цены в открытом доступе.
Ориентировочно в 2 раза дешевле флюссоника.

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

ну что ) поставил и я себе юкку. установка прошла изи без затыков, посмотрим как будет работать. пока вижу что при просмотре в реалтайме видео опаздывает от реального на десяток секунд минимум. Для меня не сильно критично, но неприятно. Будем посмотреть дальше )

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

Live без задержки появится в 0.5.0 или 0.6.0 вместе с ONVIF для управления PTZ.
Правда последнее будет только в платной версии.

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

Зачем докер? Вот нахера?

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

Ну тут несколько причин, основная конечно это исторически так сложилось )

Архитектура предполагает, что есть:
сервер - тот, кто управляет потоками, каждый поток это воркер.

воркер - процесс запущен в докер контейнере, запускает ffmpeg с нужными параметрами для парковки потока.

Так же докер это удобно для запаковки нужной версии ffmpeg и всего прочего в 1 образ, который гарантирует воспроизводимость среды у всех. В общем плюсов у докера много, а оверхеда нет ибо это просто изоляция процессов на уровне ядра )

Если вы запустите приложение, и немного понаблюдаете, то архитектура выглядит примерно вот так : https://i.imgur.com/8zhBNoK.png

Плюс докер решает вопрос логирования, мониторинга и так делее.

Ну и в конце концов кубернетис использует докер как драйвер, а мы чем хуже ?)

Надеюсь я ответил на вопрос )

1
Автор поста оценил этот комментарий

А ПО Линия чем не угодило?

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

Ну во первых оно не бесплатно, ну т.е. нет никакого базового функционала бесплатного. Плюс  нужен клиент, а мне как то не хотелось что бы была привязка к клиенту, у всех нас уже есть 1 универсальный клиент, браузер называется ))

1
Автор поста оценил этот комментарий

@moderator перенеси плиз пост в сообщество Лига слаботочников

Лига слаботочников

1
Автор поста оценил этот комментарий

не увидел в демке ничего про разделение мест хранения видео. в стиле "эту камеру пишем на тот диск, а эту на другой". такое есть?

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

Нет, сейчас такого нет. Место хранения архива всех камер задаётся в конфиге.

0
Автор поста оценил этот комментарий

как бы не критично, но хотелось бы без задержки. )
А сколько стоит платная версия? Если для дома, а не для корпоративных целей?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Для дома пока нет платной версии и не думаю, что появится в скором времени ) Только для юр. лиц. Цены можно узнать на сайте через форму )
показать ответы
1
Автор поста оценил этот комментарий

fullhd - это 1920x1080 ? 2 мегапикселя?

20 - это всё же fps, или таки битрейт?

на чем-то более близком к народу, ну типа core i5-2ххх или вообще некрофильского core duo - никаких инсталляций не было?


просто если вы позиционируете это как FREE видеонаблюдение для дома/офиса, то надо учитывать, что под подобные цели будут отданы дешманские системы, стоящие наравне с упомянутым здесь региком за 3тыра (да и камеры без h.264, смайлик). иначе кому оно надо, кроме линуксоидов?

отсюда и вопрос про производительность.


и не совсем понимаю, в чем привязка к докеру? идеологическая? почему весь софт нельзя просто поставить в чистую ось?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
fullhd - это 1920x1080 ? 2 мегапикселя?

fullhd - это 1920x1080, да.

2-3 мегапикселя, по разному.

Вот проба 1-го из потоков

Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc

в среднем 1 час архива весит 800 - 1000 мегабайт, битрейт считай сам )


и не совсем понимаю, в чем привязка к докеру? идеологическая? почему весь софт нельзя просто поставить в чистую ось?

скорее наследие первичных реализаций.

могу немного пояснить:

Сервер запускает воркеров в докер контейнерах.

1 докер контейнер - 1 камера. В каждом контейнере запускается ffmpeg. докер решает проблему изоляции ресурсов, сбора и ротации логов и так далее. Чуть позже мы сделаем реализацию работы без докера.


просто если вы позиционируете это как FREE видеонаблюдение для дома/офиса, то надо учитывать, что под подобные цели будут отданы дешманские системы, стоящие наравне с упомянутым здесь региком за 3тыра (да и камеры без h.264, смайлик). иначе кому оно надо, кроме линуксоидов?
отсюда и вопрос про производительность.
ну на старом ведре(типа целерон 2 ядра 1.6Гц и 4 оперативки ddr2 ), стоит за холодильником я запускал 10 камер спокойно, всё работало, лишь бы диск успевал писать )

Про поддержку венды вопрос решается, но не всё сразу )

0
DELETED
Автор поста оценил этот комментарий
https://get.yucca.app/latest/yucca-install.sh

1) зачем тащить с собой статик ffmpeg? достаточно проверить существование локального, а вообще давно уже репы придумали, в которых зависимости для пакетов прописываются

2) не проверяется наличие wget

3) wget https://get.yucca.app/latest/yucca

--2020-10-19 21:22:09-- https://get.yucca.app/latest/yucca

Распознаётся get.yucca.app (get.yucca.app)... 95.217.182.204

Подключение к get.yucca.app (get.yucca.app)|95.217.182.204|:443... соединение установлено.

HTTP-запрос отправлен. Ожидание ответа... 404 Not Found

2020-10-19 21:22:10 ОШИБКА 404: Not Found.

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

1) ffmpeg нам нужен от 4 версии, по этому с собой свою статик сборку таскаем, что бы гарантировать, что оно совместимо.

2) Уже в 0.4.0 дистрибуция будет при помощи deb пакетов, это скрипт временное решение, да и в любой убунте wget есть из коробки.

3) Я перепроверил сейчас у себя, всё корректно скачивается.

https://i.imgur.com/hj5v5cw.png

Попробуй повторно запустить скрипт, если снова будут проблемы, напиши в телеграм чатик, который я указал, там разберёмся.

1
Автор поста оценил этот комментарий

13 камер с каким разрешением и fps?

ну и названием процессора поделитесь ) а то 34% от непонятно чего - мало информации дает.

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

13 fullhd, битрейт разный в среднем 20 будет я думаю.

https://i.imgur.com/hZ2GfP0.png


# lscpu

Architecture: x86_64

CPU op-mode(s): 32-bit, 64-bit

Byte Order: Little Endian

CPU(s): 3

On-line CPU(s) list: 0-2

Thread(s) per core: 1

Core(s) per socket: 3

Socket(s): 1

NUMA node(s): 1

Vendor ID: AuthenticAMD

CPU family: 23

Model: 1

Model name: AMD EPYC Processor (with IBPB)

Stepping: 2

CPU MHz: 2495.312

BogoMIPS: 4990.62

Hypervisor vendor: KVM

Virtualization type: full

L1d cache: 32K

L1i cache: 64K

L2 cache: 512K

L3 cache: 8192K

NUMA node0 CPU(s): 0-2

Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm rep_good nopl xtopology cpuid extd_apicid tsc_known_freq pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 arat

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

Хм. Архив - смотрите как сделал Trassir. Когда диск вылетит, вы не потеряете всё (или пропорциональный кусок), а фактически только часть кадров, которые раскиданы равномерно по всему архиву. Видео с отсутствием части кадров значительно лучше, чем отсутствие видео вообще. Соответственно, поддержка нескольких дисков не в конфигурации raid, а каждый отдельно (jbod), а софт сам по ним раскладывает параллельно.

Для кодирования/декодирования - используйте gpu. Это то, что за столько лет не сделал Trassir. На клиенте смотреть пачку h265 камер просто невозможно. Процессор - совсем не то, что нужно для быстрого декодирования. Современные gpu значительно лучше заточены под такие задачи.

Еще, поддержка h265 просто обязательна. Сейчас все новые ip камеры это умеют и размер данных там до двух раз меньше (а то может и того больше).

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

По поводу всех этих софтрейдов и т.д. если честно не очень хочется заморачиваться, кажется это не наша зона ответственности разбираться сколько там и каких дисков ) Определённо хочется поддерживать какой нибудь s3/swift как дрйвер.


h265 - как только будет поддержка в MSE со стороны браузера и в hls.js соответственно, поддержка у нас появится автоматически. Пока это не умеет играть браузер, мы соответственно тоже не умеем )


кодирования/декодирования  - вообще в планах есть, https://gitlab.com/yuccastream/yucca/-/issues/376 но не уверен, что скоро до этого доберёмся )

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

на pfsense (freebsd), судя по закрытости кода, либо не стартанет вообще, либо через костыли и грабли запустится на linux-эмуляторе, но как повезет.


в мире (и просто в обычных офисах, если они не новорожденные в последние 3-4 года) овердофига камер, не умеющих h.264.


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

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

freebsd - поддержки пока нет, т.к. есть привязка к докеру, как только реализуем возможность запуска воркеров без докера, сможем и под фря собирать я думаю.


h.264 - да, предполагается что вы используете современные ip камеры. h.264 - потому, что нужно в браузере играть.


декодирование на стороне сервера - его как раз таки нет, от сюда же и требование к кодеку. Поток мы просто ремюксим, а это не тяжёлая операция. Единственное, если камер много, то много и процессов ffmpeg, сильно ростёт LA, и тогда желательно побольше частоты у процессора.

Вот скриншот утилизации тестового стенда на котором сейчас запаркованно 13 камер

https://i.imgur.com/ODOreEx.png

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

не увидел в демке ничего про разделение мест хранения видео. в стиле "эту камеру пишем на тот диск, а эту на другой". такое есть?

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

Думаю добавим в будущем возможность указания нескольких хранилищ, с возможностью выбора нужного.

0
Автор поста оценил этот комментарий

Было б может и интересно если б можно было на китайскую еболду типа оптимуса установить. А то там слишком много китайских немытых носов, и не только китайских.

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

что такое оптимус ? дайте ссылку, может и можно )

3
Автор поста оценил этот комментарий

Это не софтрейд. Именно в этом и смысл. У меня, к примеру, пару десятков дисков по 4Тб под одним сервером. У каждого - своя обычная файловая система. Трассир просто пишет сразу на все диски, разбивая поток на небольшие фрагменты. Таким образом, при выходе из строя одного диска, я потеряю только часть мелких фрагментов из потока, но видео при этом можно будет смотреть, хоть и с пропусками кадров. При этом тут вылезает еще один бонус - чтение. Потянуть видео одновременно с 5-10 дисков значительно быстрее, чем с одного. Уверен, что если сильно поискать, можно найти опенсорс решение, которое использовать как основу для создания алгоритма такого распределения.

А если вы не хотите разбираться с дисками, вы этим создаете головную боль юзеру. У меня на работе только в одном здании 30 камер и архив надо хранить несколько месяцев. Покупать СХД ? Будет по цене сопоставимо со всем проектом. Я поэтому и выбрал трассир - там люди подумали и сделали очень правильно. Теперь я могу наращивать архив просто добавляя (на ходу) диски. Никаких рейдов, кластерных fs и прочего. Тупо jbod. Поставьте трассир, посмотрите как он пишет.


Да, в этом недостаток отсутствия собственного клиента - надо ждать, пока h265 вкрутят в браузеры и библиотеки. Ну хоть записывать-то можно? При просмотре или сгружать файл клиенту или транскодировать на gpu в h264.


Ну вообще надо бы добраться. Есть же бенчмарки, которые покажут, сколько потоков можно будет завести на не самое дорогое gpu. Тогда у вас резко упадут требования к сpu. Плата, которая устарела на пару поколений, может стоить очень недорого, а профит с неё будет ощутимый. А еще, можно вообще в сторону SoC посмотреть, типа малины. Там, правда, с дисками не очень будет (интерфейсов нормальных нет), но зато цена и компактность. Может есть более продвинутые одноплатники.


Эта.. В общем не стесняйтесь брать у других хорошие идеи и воплощать их в своем продукте :) Он от этого только выиграет.

раскрыть ветку (1)
Автор поста оценил этот комментарий
То, что вы описали и есть софтрейд. Распределённое хранение данных на уровне приложения ) Если будет потребность у клиентов, то может и сделаем.

А какой смысл писать h265/vp8/vp9/av1 если это нельзя посмотреть ? потому и не поддерживаем )

GPU вообще пока не занимались, даже не на чем тестировать, из-за майнеров сейчас недорого и не купить gpu )
показать ответы

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

Недвижимость и ремонт

Теги

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

Сообщества