Разработка электроники,

Систем автоматики,

Программного обеспечения

ООО "Антех ПСБ",
Санкт-Петербург

+79811865082

anteh@bk.ru

ООО Антех ПСБ примеры

Установка настройка Motion 3.2.12

Сайт https://anteh.ru

Проврка нагрузки на процессор 1 IP камера

Для текущей задачи видео регистрации motion будет Формировать .jpg и .avi файлы. Можно настроить накопление только .avi файлов и только тех промежутков времени, где было движение. Можно сохранять только .jpg изображения. Под .avi подразумевается mjpg. Звука нет. Но можно настроить через скрипты запуск сохранения RTSP потока содержащего как видео, так и звук.
Через локальный сервер можно просматривать изображение на одной из видеокамер. При отсутствии движения количество кадров будет 1 когда webcam_motion on, и станет webcam_maxrate, когда будет обнаружено движение.
Если камера не поддерживает автоматическую регулировку яркости, ее можно установить вручную. За это отвечает сразу несколько параметров. Так отключенный по умолчанию auto_brightness разрешает Motion регулировать яркость. Ее величина берется из значения brightness, регулируемого в пределах 0-255. Если последнее установлено в 0, тогда auto_brightness установит среднее значение 128. За регулировку контраста и насыщенности отвечают contrast и saturation. Качество изображения регулируется с помощью quality. Чтобы изменить формат файла с jpeg на ppm, параметр ppm устанавливаем в on. Можно задать детектирование изображения только в определённой области, делаем снимок камерой, создаем маску, в которой нужная область окрашена белым, а все остальное черным. Сохраняем его в файле формата pgm и указываем путь при помощи mask_file.
Motion сохраняет информацию с камер в форматах: jpg, ppm файлы и mpeg видео последовательности.

С web мордой для motion под FreeBSD проблемы. Пока не нашёл подходящей, нужна возможность смотреть несколько текущих записей и возможность просматривать архив любым количеством авторизованных пользователей. Под Linux таких проблем нет.

FFmpeg - набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровое аудио и видео в различных форматах.
ffserver идёт в комплекте с ffmpeg и выполняет роль медиа-сервера - получает видеопоток от ffmpeg, который может быть запущен на другом компьютере, и раздаёт его пользователям. Эти пакеты автоматически устанавливаются с motion.

В отличие от обычных IP камер, которые могут передавать изображение только в режиме сжатия MPEG-4 или MJPEG, камера TL-SC3130 может одновременно передавать видео в MPEG-4 и MJPEG. Видео в MJPEG передается практически без потерь в качестве, однако, с большими расходами трафика, в то время как формат MPEG-4 позволяет передавать видео малого размера. Это была выдержка из инструкции, возможно чего и не понял, но чтобы заработал MJPG поток, нужно отключить RTSP в настройках TL-SC3130 IP камеры.

Настройка TL-SC3130. IP по умолчанию 192.168.1.195:80 и после аппаратного сброса. Настраивать только через InternetExplorer, иначе будут глюки, например в Firefox не работало сохранение конфигурации.
http://192.168.1.195/index.htm -здесь картинка.
http://192.168.1.195/setting.htm -здесь настройки.mt1

Обновляем прошивку до последней версии, старая субъективно глючила. С офф сайта качаем и через тот же web интерфейс обновляем.mt2

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

Важный момент, если motion будет неправильно настроен -запускаться в режиме не демона. И будет настроен автозапуск, то вы можете потерять связь с сервером. Дело в том, что при автозапуске после перезагрузки сервера motion(если не в режиме демона) запускается в отладочном режиме и загрузка OS продолжена не будет. В общем motion должен запускаться в режиме демона.

Просмотр изображений, транслируемых motion сервером удобней просматривать safari браузером и скорее всего всеми браузерами на webkit. Explorer не подходит, в Firefox картинка грузится фрагментами. И Firefox и safari похоже копит принятые картинки, что со временем приводит к расходу всей доступной оперативной памяти. Но возможно всё дело как обычно в правильных настройках.

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

Важно произвести/узнать правильные настройки видеопотока предоставляемого IP камерой. Соответственно в настройках IP камеры http://192.168.xx.yy:80/setting.htm -> Camera -> General нужно выставить или запомнить использующийся RTSP порт, если будет использоваться RTSP, например для теста. Motion с RTSP не работает.
mt3

Важно узнать netcam_url, с которого будет поступать видеоданные с камеры. Согласно некоторой документации http://www.ispyconnect.com/man.aspx?n=tp-link для TL-SC3130:

TL-SC3130 FFMPEG http://IPADDRESS/videostream.cgi?resolution=8&rate=13 Yes None comment

TL-SC3130 JPEG http://IPADDRESS/jpg/image.jpg?size=3 No None comment

TL-SC3130 JPEG http://IPADDRESS/jpg/image.jpg No None comment

TL-SC3130 JPEG http://IPADDRESS/live/mjpeg No None comment

TL-SC3130 JPEG http://IPADDRESS/cgi-bin/jpg/image No None comment

TL-SC3130 MJPEG http://IPADDRESS/video.mjpg No None comment

TL-SC3130 MJPEG http://IPADDRESS/videostream.cgi No None comment

TL-SC3130 MJPEG http://IPADDRESS/video.mjpg?q=30&fps=33&id=0.5 No None comment

TL-SC3130 VLC rtsp://IPADDRESS:554/video.mp4 Yes None comment

В общем попробуем netcam_url http://192.168.0.60/videostream.cgi TL-SC3130_SDK -отсюда можно скачать комплект разработчика, в котором есть http_command_guide.pdf файл, в котором есть информация о том, какой URL использовать для получения того или иного потока.
От туда есть такая информация:
Example: Get MPEG4 video/audio stream (Only MPEG4 support audio frames)
http://<servername>/video.mp4
Return: MPEG4 video frames

Выбираем:
rtsp://IPADDRESS:554/video.mp4
или
rtsp://IPADDRESS/video.mp4
rtsp по умолчанию на 554 порту.

Через VLC 2.0.7 проверим, выдаёт ли камера RTSP поток. Здесь есть как аудио так и видео.
VLC -> медиа -> открыть URL:mt4

И наблюдаем видео со звуком:mt5

Всё в порядке. Не забываем, что сейчас ищем волшебные строки netcam_url прописываемые в конфигурационных файлах motion, которые позволяют запрашивать от IP камеры соответствующие потоки. Для каждого производителя IP камер это будут какие-то свои строки.
Проверено, для TL-SC3130 netcam_url http://192.168.6.2:60001/jpg/image.jpg позволяет принимать картинки .jpg и соответственно сохранять их на диск + формирование .avi файла. Но всё это без звука.

В общем для TL-SC3130 в netcam_url минимум может быть:
netcam_url http://xxx.yyy.zzz.ttt:ggggg/jpg/image.jpg
netcam_url http://xxx.yyy.zzz.ttt:ggggg/video.mjpg

rtsp://xxx.yyy.zzz.ttt:554/video.mp4 качество отличное и со звуком, но motion rtsp не воспринимает.

Но есть один момент. Самым правильным вариантом для видеорегистрации будет использование MJPJ потока. Чтобы использовать/включить mjpg поток для TL-SC3130 нужно отключить rtsp в настройках камеры. Максимальный fps TL-SC3130 для mjpg =15.

Согласно документации для TL-SC3130:
1.Картинки:
http://192.168.6.2:60001/jpg/image.jpg
2.Видеопоток:
Example: Get MPEG4 video/audio stream (Only MPEG4 support audio frames)
http://<servername>/video.mp4
Return: MPEG4 video frames
3.MJPEG:
Get MJPEG video stream
http://<servername>/video.mjpg
4.Transmit audio stream data
Example:
http://<servername>/ in/view/transmit

В общем окончательно останавливаемся на:
netcam_url http://<servername>/video.mjpg
netcam_url http://192.168.6.2:60001/video.mjpg

Учитываем ещё момент, нужно знать, сколько fps для mjpg может выдать ваша IP камера. И fps установленное в конфигурационных motion файлах должно быть не больше. Для TL-SC3130 максимальный fps =15 согласно документации, а по факту было 12-14(определял по количеству записываемых картинок на диск), т.е. в конфиге нужно прописывать не более 10, иначе из-за выпадающих кадров воспроизведение .avi будет происходить в ускоренном режиме. Да и 10 fps для целей видео регистрации весьма более чем предостаточно и даже избыточно. Правда не помогло даже если установить 5fps, то иногда картинок появлялось на одну-две меньше. Информация в этом абзаце может быть неточной -это поверхностное мнение сформировавшееся на основе наблюдений.

Основной фаил конфигурации называется motion.conf, по умолчанию находить в /usr/local/etc. В нём находятся настройки самой программы, а также задаются общие параметры для всех камер. Если нужно подключить больше одной камеры то индивидуальные настройки каждой камеры задаются в файлах thread1.conf, thread2.conf , thread3.conf и т.д., которые нужно создать и положить в /usr/local/etc прописав путь к ним в motion.conf:
thread /usr/local/etc/ thread1.conf
thread /usr/local/etc/ thread3.conf
thread /usr/local/etc/ thread4.conf

Cоздаём папку:
/var/run/motion

Создаём папку:
/usr/local/etc/motion
И туда помещаем создаём thread1.conf файл

В /usr/local/etc/motion.conf
Должно быть: process_id_file /var/run/motion.pid

motion поднимает небольшой http сервер, а так как для каждой камеры запускается своя инстанция программы с отдельным конфигом, webcam_port должен быть для каждой камеры свой, а control_port один и тот же он прописывается только один раз в motion.conf.

Пишутся только .avi и только при движении. Используется MJPG. Рабочий конфиг /usr/local/etc/motion.confmotion.conf

Рабочий конфиг /usr/local/etc/motion_cam/thread1.conf: thread1.conf

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

#Для автозапуска добавляем в /etc/rc.conf:
motion_enable="YES"

/usr/local/etc/rc.d/motion [fast|force|one](start|stop|restart|rcvar|status|poll)

Запуск:
# motion
[0] Processing thread 0 - config file /usr/local/etc/motion.conf
[0] Processing config file /usr/local/etc/motion_cam/thread1.conf
[0] Motion 3.2.12 Started
[0] Motion going to daemon mode

Если наблюдаем подобный вывод, то всё в порядке, motion стартовал в режиме демона.
Соответственно в папке соответствующей камеры на сервере будут копиться .jpg файлы и .avi файлы. .avi будут сохраняться согласно заданной периодичности.

mt6

http://10.20.30.40:8081/ для просмотра видео из удалённого браузера. Если сервер к которому подключена камера за NAT, то нужно пробросить порт, на котором ретранслирует motion.

Так выглядит удалённое конфигурирование motion через web интерфейс, после ввода имени и пароля, заданного в конфигурационном файле:
mt7

В случае проблем с источником изображения наблюдалась следующая картина:mt7

Если кто сидит за NAT, то делаем редирект tcp портов каждой из камер и порта встроенного сервера конфигурации motion. Для FreeBSD и блокирующего IPFW это может выглядеть так:
ipfw nat 1 config ip ${ip_ext} reset same_ports deny_in \
redirect_port tcp 192.168.xx.yy:8081 8081 \
redirect_port tcp 192.168.xx.yy:8080 8080

После успешного запуска смотрим видео по ссылке http://192.168.0.1:8081/ В итоге имеем потоковое видео с камеры в формате mpeg

В результате получили папки для каждой из подключённых видео камер. В папку сохраняются только те моменты, когда было обнаружено движение и 10 кадров до и 30 после начала/окончания движения. Папка каждой камеры содержит .avi файлы каждый из которых содержит кадры с движением.

Проверка загрузки процессора


Конфигурационные файлы приведены выше. Для одной TL-SC3130 выставлены максимальные настройки fps=15 для этой камеры, разрешение 640x480 используется mjpg поток, ведётся запись только .avi файлов по детектору движения, сетевая карта не intel, а самая простая Ethernet pci кара.
По данным top. motion на FreeBSD 9.1 p4 AmdAthlon x2 64bit 3200MHz одна камера TL-SC3130 грузит процессор на 19-23% при движении, 5.3-6% при отсутствии движения(объектив закрыт), 6-9% при отсутствии движения(объектив направлен в глубь комнаты), 0.1% или 0% если RJ45 камеры отключён от сервера. -Всё это со включённым детектором движения. Разумеется, чем сложней будет картинка, тем больше будет трафик и нагрузка на процессор.
На скомпилированных скриншотах ниже показана нагрузка на сеть камера-сервер и загрузка процессора при отсутствии движения со включённым детектором движения запись .avi на диск не производится(движения нет) объектив камеры почти закрыт:mt9 mt10

Тоже самое, объектив камеры совсем закрыт:mt11 mt12

Тоже самое, камера в потолок:mt13 mt14

Тоже самое, камера на более живую картинку так же при отсутствии движения удалённые клиенты как и в предыдущих случаях не подключены:mt15 mt16

Предыдущий случай, камера на более живую картинку так же при отсутствии движения и + 1 удалённый клиент просматривающий картинку движения отсутствуют. В настройках motion задано 1 картинка при отсутствии движения и 5 кадров при его наличии webcam_maxrate 5. Клиенты на nfe0:
mt15 mt17

Тоже самое но удалённых клиентов 2 firefox и 6 safari nfe0 -клиенты. Все клиенты запущены на одном и том же удалённом компьютере. Удалённом -доступ по internet не через local:mt18

То же самое при наличии движения производится запись .avi на диск. Только .avi и только при наличии движения.mt19

Удалённых клиентов 1 firefox и 6 safari:mt20

Тоже самое с движением, но без клиентов:mt21

Плачет intelовская карточка по всему этому делу.

Тоже самое, без клиентов и с постоянной записью на диск только .avi файлов mjpg. Детектор движения отключён ffmpeg_cap_new on и output_all on:mt15 mt22

Предыдущий случай, но с клиентами 1 firefox и 6 safari:mt23

Тоже самое, но с одним удалённым клиентом safari:mt24

В общем счастья нет. С детектором всё-таки лучше, иначе места на диске не напасёшься. За 15 минут 690 мегабайт, за 22 минуты 1 гигабайт, вышеуказанной картинки. Если объектив закрыть, то за 15 минут напишется 200 мегабайт. Записалось производилась непрерывно на текущих максимальных настройках. И это далеко не предел.
Полагаю данные будут более объективны, если замеры сделать хотя бы с 2-4мя камерами.

Вывод Motion целесообразно использовать только с записью по детектору движения.

Разумеется поспешных выводов не делаем, возможно с двумя камерами нагрузка увеличится не в два раза, а например в 1.6. Нужно смотреть. Да и fps =15, и разрешение 640x480 и остальные параметры не щадящие ресурсы. Т.е. если без фанатизму, то всё отлично работает.

Если на горячую отключить RJ45 от TL-SC3130 и через 2минуты подключить обратно, то поток не восстановится, восстанавливается, если пере подключить питание камеры. Отсюда делаем вывод, что нужно предусмотреть скрипт, который при отсутствии потока будет пытаться пере инициализировать TL-SC3130.
В общем максимальные настройки, при большом количестве камер выставить не получится. Есть непроверенная информация, что для каждой HD видеокамеры наблюдения, подключённой к zoneminder нужно одно ядро от 3GHz.

Copyright ©Новиков Алексей Александрович,

2023 Санкт-Петербург, 197372, ООО "Антех ПСБ",

anteh собака bk.ru