Pull to refresh

Comments 34

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

PS/ Подумав, решил написать, что из-за таких статей Хабр для меня по прежнему торт. Свой опыт и велосипед, что может быть лучше. Разве, что тема синей изоленты не раскрыта.

Тему синей изоленты раскрыть сложно, это как теория простых чисел:)

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

Мой опыт без бубна: DS-2DE2022-DE3 с сёстрами пишет на Synology (может писать и на ХРenology), а там уже есть android-приложение Synology DS Cam (которое, правда, не любит слабенькие роутеры).

Тема выбора NAS (если вы об этом) довольно обширна. Когда-то пробовал разные варианты: Raspberry Pi, Intel Atom. На Synology тогда был ценник выше, плюс хотелось универсальности. Intel NUC, по факту, не намного дороже Малинки, но закрывает вообще все вопросы - ставим Linux и делаем все, что душе угодно.

Согласитесь, делали вы всё это по одной причине - just for fun.

Можно поставить Xpenology, не изобретая велосипедов, и получить богатейший функционал, я даже могу сказать - профессиональный функционал по меркам классических систем видеонаблюдения. Там есть всё, и контроль состояния дисков и данных, и разные способы бекапов, богатейший API, есть встроенная система автоматизации, типа если ваш телефон в географической зоне "x", то сделать действие "y"(например повернуть камеру ptz), есть логирование всех действий и поведения камер, разграничения прав юзеров, просмотр видеоархива на скорости до ×100... да блин, это вообще тема даже не статьи а цикла статей. Ну и это только приложение в NAS, все остальные функции никуда не делись и также доступны, хоть тот же Докер, в котором что угодно можно поднять.

Согласитесь, делали вы всё это по одной причине - just for fun.

Абсолютно согласен, в точку!:) И спасибо за информацию.

Раз уж без бубна, то Ubiquity Dream Machine Pro решает все вопросы сразу, и не только с камерами, но заодно и с локальной сетью (а если надо, то и с телефонией и с контролем физического доступа). Относительно дорого, правда...

Да, ценник приличный. И это, похоже, под 19" стойку. Даже не знаю, каждому свое, наверное)

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


Коллега сделал то же самое у себя на чердаке, благо он у него отапливаемый.

А чем zoneminder для этой задачи не угодил, что пришлось изобретать свой велосипед?

Эм... Там, в середине статьи, есть требования к серверу, мне нужно было выполнить все пункты. А так у меня все работало на простейших bash скриптах и юнитах. Ну или можно было бы ffserver поднять, если бы он не умер...

Ну так я прочитал ТЗ и, собственно, вопрос и возник. Zoneminder всё перечисленное (и сильно больше) умеет из коробки. У меня он на 9 камер работает уже несколько лет. При этом работает на очень древнем железе - если не распознавать движение в кадре (что в ТЗ отсутствует) и не перекодировать видео на лету (режим H.264 passthrough, ЕМНИП), то аппетиты вполне скромные.

Насколько я знаю, Zoneminder писать видео не умеет, только картинки. Ну и потом, нравится мне возиться с железками и софтом. Похоже, в моем случае "разработчик" - это диагноз:)

Ну как он там внутри себя хранит видео - это его внутреннее дело :) , но при необходимости выгрузить видеоролик делает это легко. Хотя именно выгружать мне редко требуется, а для просмотра истории есть удобный интерфейс timeline. Плюс отличный мобильный и десктопный клиенты (я пользуюсь zmNinja, но их на выбор разных).

Не понятно, что именно не получалось в браузере? Картинку смотреть? 2023 от Хика довольно старая камера, для них хорошо использовать Firefox 52 ESR. Тогда в браузере картинка будет. Но если можно получить поток в VLC, то от браузера требуется только открыть настройки, а результат смотреть в плеере

Вы правы, от браузера нужны были только настройки. Как минимум, IP прописать. Кроме того, по умолчанию камера отдает картинку в H.264, а мне H.264+ хотелось, очень много места на диске экономит.

За старый FF спасибо, надо попробовать.

Видимо, вы не сталкивались часто с Hikvision. У него и у многих других реализован протокол SADP, который позволяет на L2 уровне общаться с камерой и как минимум задать сетевые настройки. Т.е. камеру можно просто воткнуть в сетевой порт компа и активировать, сбросить в заводские параметры, задать сетевые параметры, привязать к HikConnect.
Правда, сейчас Hik под санкциями в штатах, поэтому мы в компании для бюджетных решений переходим на Dahua и Partizan

Вот это интересно! По этой ссылке, действительно, предлагают скачать утилитку (.exe, конечно). В инструкции об этом ни слова. Спасибо, попробую!

Всё-таки через некоторое время трава всё равно начинает проростать через асфальтную крошку :(

Устанавливаю Win 7 в виртуалку, настраиваю камеру

А можно было бы установить IVMS от Hikvision, и получить контроль обновления прошивок, те же настройки, и массу другого функционала. Почему ещё хорошо пользоваться ivms? Потому что полноценно работает с камерами Hikvision. Иногда камера не прошивается через браузер, иногда настройки не применяются из-за проблем с кешем, таких проблем нет при работе через ivms.

Вот все-таки здорово, что я потратил время на эту статью! И что-то новое узнаешь, и старое переосмысливаешь... Спасибо, попробую!

Не знаю, насколько здесь это уместно, но можно так:

  1. Для видеозаписи берём ffmpeg и упаковываем RTSP в уютный mp4 интервалами по n минут. У меня интервалы по 15 минут. Добавляем в cron:

    */15 * * * * ffmpeg -i rtsp://user:password@camip:554/ISAPI/Streaming/Channels/101 -c:v copy -t 15:00 "/security/cam1/(date +'\%d-\%m-\%Y \%a')/(date +'%d_%m_%Y %H_%M').mp4" > /dev/null

  2. Удаляем записи старше n интервала. У меня это одна неделя. Добавляем в cron:

    */15 * * * * find "/security/cam1/$(date +'%d-%m-%Y %a' -d "1 week ago")" -type f -mmin +10060 -exec rm -rf {} ;

  3. Удаляем пустые папки, образовавшиеся в результате удаления старых записей. Добавляем в cron:

    15 0 * * * find /security/cam1/ -type d -empty -delete

  4. Создаём новые папки для будущих записей. Добавляем в cron:

    45 23 * * * mkdir "/security/cam1/$(date +'%d-%m-%Y %a' -d "tomorrow")"

  5. Для просмотра камеры онлайн - iVMS-4500 на смартфоне и iVMS-4200 на ПК.

  6. Если на сервере есть DLNA, то можно смотреть записи на Smart TV. В моём случае это Serviio.

Конфиг: несколько камер Hikvision DS-2CD2022WD-I на участке, мост из Ubiquiti NS5ACL, сервер на Rocky Linux, для просмотра - два смартфона и LG TV.

Вполне уместно. У меня примерно так и было до этой статьи, только я вместо крона таймеры systemd использовал - следующий гарантированно запустится после остановки предыдущего. Для примера:

camera2.sh

#!/bin/sh

URL="rtsp://login:password@192.168.0.110:554/ISAPI/Streaming/Channels/101"
DIR="/path-to-storage/camera2"
DATE="`date +%Y-%m-%d`"
TTL=600

cd $DIR
if [ ! -d $DATE ]; then
    mkdir $DATE
fi
cd $DATE

NAME="`date +%H-%M`"

timeout $TTL mencoder -nocache -really-quiet -rtsp-stream-over-tcp $URL -ovc copy -o $NAME.avi

if [ "$NAME" \> "06-00" ] && [ "$NAME" \< "06-15" ]; then
    find $DIR -type d -mtime +12 -exec rm -rf {} \;
    echo "ok, daily deleting of old dir"
else
    echo "ok"
fi

/etc/systemd/system/camera2.timer

[Unit]
Description="Saving movie from camera 2"

[Timer]
OnCalendar=*:0/10
Persistent=true

[Install]
WantedBy=timers.target

/etc/systemd/system/camera2.service

[Unit]
Description="Saving movie from camera 2"

[Service]
ExecStart=/path-to-script/camera2.sh

[Install]
WantedBy=multi-user.target

Запустить нужно таймер (не сервис):

sudo systemctl enable camera1.timer

Ротацию можно сделать еще проще, без ифов, как в примере на гитхабе:

find <storage_path> -type d -mtime +<storage_period_days> -delete
find <storage_path> -type f -mtime +<storage_period_days> -delete

И не делать отдельную пару таймер/сервис под каждую камеру, а использовать @.

В статье просто весь функционал собран в одном месте.

Кстати, с ffmpeg для H.265+ у меня не срослось - если указать -c:v copy, он портит заголовки видеофайла, а если указать кодек явно, то начинает транскодировать, есть CPU и теряет плюс (который 265+). А он мне очень нужен для экономии места на диске.

Если вдруг кто знает, как это лечить, поделитесь, пожалуйста!

Можно попросить ffmpeg самому писать частями:

ffmpeg -i rtsp://user:Pass@camip/ISAPI/Streaming/Channels/101 -codec copy -f segment -segment_time 300 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1 -v warning /stor/cam1/%Y%m%d/%H/%Y%m%d_%H%M%S.mp4

Конечно, так-же нужно сопутствующее управление архивом - создание необходимых путей и удаление устаревших записей.
Запуск и перезапуск при падении организовывается с помощью systemd (или monit на древних системах).

Спасибо, это работает.

А чем вам облако не нравится от hikvision? В камерах карты памяти на 128 Гб, через интернет в облако они подключены, запись по движению в кадре (новые камеры hik стали хорошо определять людей и машины, на старых камерах эта опция не работала у меня). На телефоне приложение Ezviz, нужен только интернет и смотри или онлайн или записи событий. Через приложение работают уведомления о событиях (движение перед камерой). С компа по локалке через vpn (wireguard) прямой доступ к камере для настройки или просмотра. Новые камеры стали работать в актуальных браузерах, старый только в IE запускал.

Подобный софт именно мне был бы интересен чтобы написать бота для телеграм чата (сторожа в снт и те кто живёт зимой там) в который прилетали бы фото событий с камер и ссылки на этот кусочек видео. Это как решение вопроса доступа к камерам. Сейчас доступ (расшаривается камера для выбранного аккаунта в Ezviz) даю через Ezviz, около 10 человек подключил.

Облако нравится, не нравятся возможные перебои с и-нетом и питанием. Надежней писать локально, полагаясь на бесперебойник. Ну и отрыть камеру напрямую с мобильника, опять же, надежнее. Это если ты находишься на месте. Если на объекте никого нет, можно писать на удаленном сервере (у меня установлены две копии скрипта - одна на объекте, вторая в Германии), ну или да, в облако.

Определение движения для улицы работает у меня из рук вон плохо - ветер имеет привычку шевелить предметы, а про снег, особенно ночью, уже и говорить нечего. А вот H.265+, на удивление, отлично помогает в этом вопросе - во файлах, которые заметно больше соседних по размеру, точно есть движение (у меня фрагменты по 10 минут).

Может не точно выразился, но я писал что в камерах у меня стоят карты памяти на 128 Гб, так что хранилище локальное и от интернета не зависит, главное чтобы питание не пропадало. В облако запись не идёт, через него я получаю доступ к камере для просмотра онлайн или архива.

В этом году старые камеры заменил на новые, которые ColorVu. Значительно лучше они по всем параметрам (цветная картинка ночью прямо круто). Особенно по определению объектов в кадре, у меня включена реакция только на людей и автомобилей. Ну очень редко бывает что реагирует на птиц или просто ложное срабатывание. Старые камеры тоже остались в деле, но перевесил на не ответственные позиции. Так вот она может записать весь день, если на улице ветер/метель/снег. Это победить на старых моделях не получалось никак у меня.

Да, пропустил момент про карты. Я в свое время от них отказался из-за безопасности. Если камеру с картой снимут, запись тоже пропадет. А так хотябы останется физиономия вандала.

За ColorVu спасибо. Правда, PoE не нашел в этой серии на вскидку.

PoE точно есть, у меня вот такая модель DS-2CD2347G2-LU, работает от PoE коммутатора. У меня в принципе нет камер без PoE даже из старых закупок.

В облаке Ezviz у меня настроено оповещение с камер. Камера в момент события делает фото и его шлет через облако в приложение на телефон. В телефоне срабатывает уведомление. Вот не помню будет ли в облаке фото события доступно после отключения камеры из сети, нужно проверить.

Ранее настраивал отправку фото на email, это штатная функция во всех моделях Hik. Идея там такая же, в момент события делается 3 фото с заданным интервалом (я делал 2 секунды) и сразу же отправляется на email (можно и ftp). Сейчас отказался дабы не дублировать фото с облака еще и на почту.

Ага, у этой модели есть, буду иметь в виду, спасибо.

Взял этим летом две бюджетные домашние камеры - Ritmix и Xiaomi. У первой и RTSP, и ONVIF, и PTZ. А у Xioami проприетарный протокол, невозможно никак подключиться к видеопотоку не из своего софта.

Хотел поставить две камеры в квартиру, на малину 4-ю поставить iSpy и организовать хранение видеоматериалов. В итоге за неделю не успел всё сделать (пришлось уезжать), и сделал просто и неинтересно - подписка на Ritmix и Xiaomi с флэшкой + запись на Samba (которая на малине и поднята).

В следующий раз приеду уже с полноценной камерой (с нормальным onvif/rtsp) и скорее всего подниму на малине iSpy.

Кстати. Проблема потери электричества решается БП перед камерой и модем с мобильной симкой

По своему опыту могу сказать, что камеры Rubetek именно с точки зрения кода, поэтому не жалею, что решил у себя поставить именно такие камеры.
С удаленным же доступом проблем нет совершенно.

В примере выше у Хика, при почти одинаковой цене, характеристики заметно лучше. Имхо.

Sign up to leave a comment.

Articles