- Как сделать облачное видеонаблюдение
- 2 thoughts on “ Как сделать облачное видеонаблюдение ”
- Как создать свой сервер? Облако для видеонаблюдения
- Как мы научились подключать китайские камеры за 1000р к облаку. Без регистраторов и SMS (и сэкономили миллионы долларов)
- Немного истории
- Техника
- Состав прошивки
- uboot
- Ядро linux и rootfs
- Video application
- Подсистема обновления
- CI/CD система сборки и деплоя прошивок
- Информационная безопасность
- Заключение
Как сделать облачное видеонаблюдение
Я не доверяю никому, кроме себя. Поэтому и видео своего дома никому доверить не могу. Да еще и за деньги. Что же делать? Как сделать облако для видеонаблюдения самому?
Опишу основную проблему. Камера – это обычный клиент в локальной сети. Этот клиент не может никуда подключиться самостоятельно. Только если кто-то обратится к этой камере сам. Камера – это сервер видео потока. А по факту – лишь клиент локальной сети. Если нет проброса портов и статического IP адреса, то ничего не сделать…. НО! Есть идея! Надо поставить перед камерой еще один роутер…. Самый дешевый! Но с прошивкой DD-WRT. Зачем? Нам надо, чтобы этот второй роутер делал VPN канал до нашего “облака”.
Берем дешевый роутер D-link. Прошиваем его DD-WRT. В сервисе делаем PPTP Client. И настраиваем клиента для подключения к нашему облаку на статическом IP. То есть роутер позволяет соединить локальные сети, чтобы видеорегистратор смог подключиться к “локальной” (хотя удаленной) камере. Как это выглядит на тестовом стенде и должно выглядеть в реальности:
- Берем роутер (любой, находящийся в базе DD-WRT).
- Прошиваем DD-WRT.
- В настройках включаем PPTP Server и указываем диапазон IP адресов клиентов.
- Этот роутер должен иметь статический IP или должен быть DMZ основного роутера.
- Берем второй роутер (если основной роутер не может быть прошит под DD-WRT или к нему нет доступа). Он будет “клиентом” для организации VPN туннеля до сервера VPN.
- Прошиваем DD-WRT.
- На нем настраиваем PPTP Client. В настройках ОБЯЗАТЕЛЬНО указать mppe required,no40,no56,stateless в MPPE Encryption.
- Поключаем камеру к этому второму роутеру и делаем у камеры статический локальный IP, чтобы NVR знал, куда надо ломиться.
- Включаем все.
- NVR + роутер-сервер VPN – на стороне “сервер-облако”. Да, нужен статический IP… не без этого. Но дома – любой провайдер за 150р. дает выделнный IP.
- Удаленная камера + роутер-клиент VPN – это наша “удаленная” камера.
- VPN-клиент подключается к VPN-серверу и локальные сети с NVR и камеры становятся доступны друг другу через VPN туннель.
- NVR обращается к камере запрашивая видео поток с удаленной камеры.
- “Облако” готово.
Как оценить затраты?
- IP Камера D-link – от 5000 руб.
- NVR от D-link, например, DNR-322L – 13000 + жесткий диск – 2000 = 15000 руб.
- Роутер домашний-сервер-VPN – 1000 руб.
- Роутер удаленный-VPN-клиент – 1000 руб.
- Интернет в месяц у клиента + у сервера + выделенный IP – примерно 500+500+150 = 1150 руб в месяц.
Итого: 5000 + 15000 + 1000 + 1000 + ежемесячный инет = 22000 + 1150 в месяц на интернет.
Что такое 22 тыс за облачную камеру? Ну взять например ivideon. Камера – от 6000 + в месяц от 300 руб за 10 дней + роутер 1000 + интернет у клиента 500 в месяц. Итого: 7000 + (300+500). Казалось бы дешевле? Но нет! На свой диск можно записать месяцы и более… а на 300 руб в месяц – только 7 дней. Вы можете расширять кол-во камер безгранично. А вот за ивидеон придется платить… и платить… и платить. Надежность? Да кто вам сказал, что у них будет безопаснее, чем у вас. Сделайте рейд на DNR-322L – он это умеет!
Бонус от личного облака – можно использовать “родную” возможность D-Link при работе с облаками – вы можете из любого места смотреть онлайн все камеры + смотреть архив!
Решайте сами – платить другим или один раз заплатить себе…. и все!
2 thoughts on “ Как сделать облачное видеонаблюдение ”
А как сделать с уже арендованного хостинга где у меня сайт
Огромное спасибо за идею, хочу наладить себе частное видеонаблюдение, в том числе с удаленными объектами, но принципиально не хотел пользоваться облачными интернет-сервисами, тем более китайскими. Теперь буду знать куда копать.
Источник
Как создать свой сервер? Облако для видеонаблюдения
Здравствуйте! Хочу попробовать создать свой сервер для того, чтобы объединить камеры видео наблюдения, находящихся в разных местах города. Например, есть видеорегистратор дома (там своя локальная сеть, свой интернет, нет статического IP), такая же ситуация на даче. И есть офис, где стоит сервер (пока что это Ubuntu Server), опять же, своя локальная сеть, свой интернет, но уже со статическим IP. Так же есть приложение, в которое я хочу добавить RTSP потоки с камер для удалённого просмотра.
На сколько сложно всё это организовать? С чего начать поиск в интернете? Может кто-то поделится хорошим учебным материалом. С какими трудностями я могу столкнуться? И какие меры безопасности сразу предпринять?
Я знаю, что есть P2P облако, и не стоит изобретать велосипед. Но мне нужно в своё приложение добавить удалённый RTSP поток. А все эти облака не дают доступа, только через их специализированные приложения можно просматривать камеры.
Так же есть задача объединить SIP телефонию и домофонию, и с этим поможет справиться Asterisk (с ним более-менее всё ясно). Возможно есть аналог этой программы, но для камер видеонаблюдения?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Сервер настроен как сервер для видеонаблюдения
Стоит программа Интелект и камеры Axis, а также стоит Axis Server. После некого сбоя (знаю только.
Как создать свой сервер для Counter-Strike 1.6?
Помогите создать сервер для контры, я весь инет перерыл и всё равно не получается. У меня вылетает.
Как создать свой сервер?
Сообщений: 3 Репутация: 0 (0) Как создать сервер? Здраствуйте! Я хочу создать сервер одной.
Как создать свой почтовый сервер?
доброе время суток. написал небольшой код на яве который будет делать рассылку. все хорошо.
ну во-первых, нужно понять, что если это будет услуга за которое будешь взымать бабло, то самое первое и очень важное условие — это бесперебойность. За 2,3-5 раз сбоя промолчат, но потом будут требовать перерасчета из-за недоступности сервиса. Во-вторых, учесть пропускную способность оборудования. Не просто 100 Мбит/с, а скорость обработки пакетов в pps. Т.е. необходимо оборудование, которое справиться с обработкой он-лайн потока, например, с 10 камер одновременно.
В-третьих, для удаленного доступа нужен адрес — куда подключаться. Это как будешь делать? Просто ip_адрес раздавать для доступа? Чтоб потом кто то его слил в тырнет и тебя заDDoSили? Наверно тут нужно в сторону регистрации домена смотреть, а уже к домену привязывать ip-адрес (или адреса) В расписанной тобой схеме статика есть на работе. Учитывая предыдущее мое опасение, рухнет не только удаленный доступ но и тырнет на работе. Готов к трудностям?
Далее. Приложение — это хорошо. Но наверняка нужно будет смотреть архивы (что было вчера или неделю назад). Это где то хранить нужно и это не обойдется пару-тройку HDD Тут нужен видео сервер с резервацией и мгновенным замещением при сбое. Т.е. как минимум две абсолютно независимых системы в зеркале. Готов к финансовым затратам?
Нужно будет свой домен хорошенько обезопасить от всевозможных кулхацкеров. Сам наврятли потянешь — это кого то нанимать. А это платить. ну и т.д.
Всё ИМХО
Источник
Как мы научились подключать китайские камеры за 1000р к облаку. Без регистраторов и SMS (и сэкономили миллионы долларов)
Наверное, ни для кого не секрет, что в последнее время облачные сервисы видеонаблюдения набирают популярность. И понятно почему так происходит, видео — это «тяжелый» контент, для хранения которого необходима инфраструктура и большие объемы дискового хранилища. Использование локальной системы видеонаблюдения требует средств на эксплуатацию и поддержку, как в случае организации, использующей сотни камер наблюдения, так и в случае индивидуального пользователя с несколькими камерами.
Облачные системы видеонаблюдения решают эту задачу — предоставляя клиентам уже существующую инфраструктуру хранения и обработки видео. Клиенту облачного видеонаблюдения достаточно просто подключить камеру к интернету и привязать к своему аккаунту в облаке.
Есть несколько технологических способов подключения камер к облаку. Бесспорно, наиболее удобный и дешевый способ — камера напрямую подключается и работает с облаком, без участия дополнительного оборудования типа сервера или регистратора.
Для этого необходимо, чтобы на камере был установлен модуль ПО работающий с облаком. Однако, если говорить про дешевые камеры, то у них очень ограничены аппаратные ресурсы, которые почти на 100% занимает родная прошивка вендора камеры, а ресурсов необходимых для облачного плагина — нет. Этой проблеме разработчики из ivideon посвятили статью, в которой говорится почему они не могут установить плагин на дешевые камеры. Как итог, минимальная цена камеры — 5000р ($80 долларов) и миллионы потраченных денег на оборудование.
Мы эту проблему успешно решили. Если интересно как — велком под кат
Немного истории
В 2016 году мы стартовали разработку платформы облачного видеонаблюдения для Ростелекома.
В части ПО камер на первом этапе пошли «стандартным» для таких задач путем: разработали свой плагин, который устанавливается в штатную прошивку камеры вендора и работает с нашим облаком. Однако, стоит отметить, что при проектировании мы использовали наиболее легковесные и эффективные решения (например, plain C реализацию protobuf, libev, mbedtls и полностью отказались от удобных, но тяжелых библиотек типа boost)
Сейчас на рынке IP камер нет универсальных решений по интеграции: у каждого вендора свой способ установки плагина, свой набор API для работы прошивки и уникальный механизм обновления.
Это означает, что для каждого вендора камер необходимо индивидуально разрабатывать объемный слой интеграционного ПО. И на момент старта разработки целесообразно работать только с 1-ним вендором, что бы сосредоточить усилия команды на разработке логики работы с облаком.
Первым вендором был выбран Hikvision — один из мировых лидеров на рынке камер, предоставляющий хорошо документированное API и грамотную инженерную техническую поддержку.
На камерах Hikvision мы и запустили наш первый пилотный проект облачное видеонаблюдение Видеокомфорт.
Практически сразу после запуска наши пользователи стали задавать вопросы о возможности подключении к сервису более дешевых камер других производителей.
Вариант с реализацией слоя интеграции под каждого вендора я отбросил практически сразу — как плохо масштабируемый и предъявляющий к железу камеры серьезные технические требования. Стоимость камеры, удовлетворяющий таким требованиям на входе:
Поэтому, я принял решение копать глубже — сделать полностью свою прошивку для камер любых вендоров. Этот подход существенно снижает требования к аппаратным ресурсам камеры — т.к. слой работы с облаком на порядок более эффективно интегрирован с video application, и в прошивке нет лишнего не используемого жирка.
И что важно, при работе с камерой на низком уровне есть возможность использовать аппаратный AES, который шифрует данные, не создавая дополнительной нагрузки на маломощный CPU.
В тот момент у нас не было вообще ничего. Вообще ничего.
Практически все вендоры не были готовы работать с нами на таком низком уровне. Информации о схемотехнике и компонентах — нет, официальных SDK чипсетов и документации сенсоров — нет.
Технической поддержки так же нет.
Ответы на все вопросы приходилось получать реверс инжинирингом — методом проб и ошибок. Но мы справились.
Первыми моделями камер, на которых мы набивали шишки стали камеры Xiaomi Yi Ants, Hikvision, Dahua, Spezvision, D-Link и несколько сверх дешевых безымянных китайских камер.
Техника
Камеры на чипсете Hisilicon 3518E. Аппаратные характеристики камер такие:
Xiaomi Yi Ants | Noname | |
---|---|---|
SoC | Hisilicon 3518E | Hisilicon 3518E |
RAM | 64MB | 64MB |
FLASH | 16MB | 8MB |
WiFi | mt7601/bcm43143 | — |
Sensor | ov9732 (720p) | ov9712 (720p) |
Ethernet | — | + |
MicroSD | + | + |
Microphone | + | + |
Speaker | + | + |
IRLed | + | + |
IRCut | + | + |
С них мы начинали.
Сейчас поддерживаем чипсеты Hisilicon 3516/3518, а так же Ambarella S2L/S2LM. Количество моделей камер — десятки.
Состав прошивки
uboot
uboot — это начальный загрузчик, после включения питания загружается первым, инициализирует оборудование и загружает ядро linux.
Скрипт загрузки камеры достаточно тривиален:
Из особенностей — два раза вызывается bootm , подробнее об этом чуть позже, когда дойдем до подсистемы обновления.
Обратите внимание на строчку mem=38M . Да, да, это не опечатка — ядру Linux и всем-всем-всем приложениям доступно всего лишь 38 мегабайт оперативной памяти.
Так же рядом с uboot находится специальный блок, называемый reg_info , в котором находится низкоуровневый скрипт инициализации DDR и ряда системных регистров SoC. Содержимое reg_info зависит от модели камеры, и если оно будет не корректным, то камера даже не сможет загрузить uboot, а зависнет на самом раннем этапе загрузки.
Первое время, когда мы работали без поддержки вендоров, мы просто копировали этот блок из оригинальной прошивки камеры.
Ядро linux и rootfs
На камерах используется ядро Linux, входящее в состав SDK чипа, обычно это не самые свежие ядра из ветки 3.x, поэтому часто приходится сталкиваться с тем, что драйвера дополнительного оборудования не совместимы с используемым ядром, и нам приходится их бэк-портировать под ядро камеры.
Другая проблема — это размер ядра. Когда размер FLASH всего 8MB, то каждый байт на счет и наша задача — аккуратно отключить все не используемые функции ядра, что бы сократить размер до минимума.
Rootfs — это базовая файловая система. В нее включены busybox , драйвера wifi модуля, набор стандартных системных библиотек, типа libld и libc , а так же ПО нашей разработки, отвечающее за логику управления светодиодами, управление сетевыми подключениями и за обновление прошивки.
Корневая файловая система подключена к ядру как initramfs и в результате сборки мы получаем один файл uImage , в котором есть и ядро и rootfs.
Video application
Наиболее сложная и ресурсоемкая часть прошивки — приложение, которое обеспечивает видео-аудио захват, кодирование видео, настраивает параметры картинки, реализует видео-аналитики, например, детекторы движения или звука, управляет PTZ и отвечает за переключения дневного и ночного режимов.
Важная, я бы даже сказал ключевая особенность — каким образом видео приложение взаимодействует с облачным плагином.
В традиционных решениях ‘прошивка вендора + облачный плагин’, которые не могут работать на дешевом железе, видео внутри камеры передается по протоколу RTSP — а это огромный оверхед: копирование и передача данных через socket, лишние syscall-ы.
Мы в этом месте используем механизм shared memory — видео не копируется и не пересылается через socket между компонентами ПО камеры, тем самым оптимально и бережно используя скромные аппаратные возможности камеры.
Подсистема обновления
Предмет отдельной гордости — подсистема fault-tolerant онлайн обновления прошивки.
Поясню проблематику. Обновление прошивки — это технически не атомарная операция и в случае если посередине обновления произойдет сбой питания, то на флеш памяти будет часть «недозаписанной» новой прошивки. Если не предпринять специальных мер, то камера после этого станет «кирпичом», который нужно нести в сервисный центр.
Мы справились и с этой проблемой. Даже если камеру выключить в момент обновления, она автоматически и без участия пользователя скачает прошивку из облака и восстановит работу.
Разберем технику подробнее:
Наиболее уязвимый момент — перезапись раздела с ядром Linux и корневой файловой системой. В случае, если один из этих компонентов окажется поврежденным, то камера вообще не загрузиться дальше начального загрузчика uboot, который не умеет скачивать прошивку из облака.
Значит, нам нужно обеспечить гарантию наличия на камере работоспособного ядра и rootfs в любой момент процесса обновления. Казалось бы самым простым решением было бы постоянно хранить на флеш памяти две копии ядра с rootfs и в случае повреждения основного ядра загружать его из резервной копии.
Годное решение — однако, ядро с rootfs занимает около 3.5MB и для постоянной резервной копии нужно выделить 3.5MB. На самых дешевых камерах просто нет столько свободного места под backup ядра.
Поэтому для backup ядра во время обновления прошивки используем application партицию.
А для выбора нужной партиции с ядром как раз и используется две команды bootm в uboot — в начале пытаемся загрузить основное ядро и если оно повреждено, то резервное.
Это гарантирует, что в любой момент времени на камере будет корректное ядро с rootfs, и она сможет загрузиться и восстановить прошивку.
CI/CD система сборки и деплоя прошивок
Для сборки прошивок мы используем gitlab CI, в котором автоматически собираются прошивки под все поддерживаемые модели камер, после сборки прошивки автоматически деплоятся на сервис обновления ПО камер.
Из сервиса обновления ПО прошивки доставляются на тестовые камеры наших QA, а по завершению всех этапов тестирования и на камеры пользователей.
Информационная безопасность
Ни для кого не секрет, что в наше время информационная безопасность — это важнейший аспект любого IoT устройства, в том числе и камеры. По интернету гуляют ботнеты типа Mirai, поражающие миллионы камер со стандартными прошивками от вендоров. При всем уважении к вендорам камер, не могу не отметить, что в стандартных прошивках заложено много функционала, который не востребован для работы с облаком, однако содержит в себе много уязвимостей, которыми пользуются ботнеты.
Поэтому, весь не используемый функционал в нашей прошивке отключен, все tcp/udp порты закрыты и при обновлении прошивки проверяется цифровая подпись ПО.
И кроме этого, прошивка проходит регулярное тестирование в лаборатории информационной безопасности.
Заключение
Сейчас наша прошивка активно используется в проектах по видеонаблюдению. Пожалуй самый масштабный из них — трансляция голосования в день выборов Президента Российской Федерации.
В проекте было задействовано более 70 тысяч камер с нашей прошивкой, которые были установлены по избирательным участкам нашей страны.
Решив ряд сложных, а местами, даже на тот момент практически невозможных задач, мы, конечно, получили огромное удовлетворение как инженеры, но кроме этого, и сэкономили миллионы долларов на закупке камер. И в данном случае, экономия — это не только слова и теоретические расчёты, а результаты уже случившегося тендера на закупку оборудования. Соответственно, если говорить про облачное видеонаблюдение: есть два подхода — стратегически заложиться на низкоуровневую экспертизу и разработку, получив на выходе огромную экономию на оборудовании или использовать дорогое оборудование, которое, если смотреть именно на потребительские характеристики, практически ничем не отличается от аналогичного дешевого.
Почему стратегически важно принять решение относительно выбора подхода к способу интеграции как можно раньше? При разработке плагина, разработчики закладываются на те или иные технологии (библиотеки, протоколы, стандарты). И если выбран набор технологий только под дорогое оборудование, то в дальнейшем попытка перехода на дешевые камеры с большой вероятностью, как минимум, займет безумно большое время или вообще потерпит неудачу и произойдет возврат к дорогому оборудованию.
Источник