» » » Сервер видеонаблюдения на базе Ubuntu Server

Информация к новости
  • Просмотров: 24410
  • Автор: sluggard
  • Дата: 6-01-2012, 17:08
6-01-2012, 17:08

Сервер видеонаблюдения на базе Ubuntu Server

Категория: UBUNTU`логия » Настройка Ubuntu

Для реализации сервера видеонаблюдения (напомню что данный вариант бюджетный) мой выбор пал на пакет motion в связи с тем, что motion работает как и с дешевыми USB камерами, так и с платами видеозахвата.
+ он достаточно прост в настройке.

Установим данный пакет:
sudo apt-get install motion


После того как установка произведена, вы можете приступить к настройке программы. В моем случае это захват видео с устройства при фиксации движения в кадре. Т.е. запись в файл начинается только в том случае, если motion фиксирует движение, очень удобно, так как это не съест все ваше свободное пространство на винте, да не будет надобности просматривать пустые фильмы.
Конфиг файл находиться в /etc/motion/motion.conf
Открываем его текстовым редактором gedit.
sudo gedit /etc/motion/motion.conf

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


# Start in daemon (background) mode and release terminal (default: off)
#Стартовать как демон, этот параметр можно поставить в on, по умолчанию он в off
daemon on

# Videodevice to be used for capturing (default /dev/video0)
# for FreeBSD default is /dev/bktr0
#В Линукс ваше видео устройство для захвата должно быть по умолчанию /dev/video0 если вы имеете несколько то соответственно /dev/video1 /dev/video2 и т.д.
videodevice /dev/video0

# Image width (pixels). Valid range: Camera dependent, default: 352
#Разрешение вашего видео тут как вам нравиться 320х240, 640х480 …
width 640

# Image height (pixels). Valid range: Camera dependent, default: 288
height 480

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
# Устанавливаем количество захватываемых кадров в секунду;
framerate 30 (30 в самый раз, но можете выбрать в зависимости от нагрузки на Ваш компьютер)

# Gap is the seconds of no motion detection that triggers the end of an event
# An event is defined as a series of motion images taken within a short timeframe.
# Recommended value is 60 seconds (Default). The value 0 is allowed and disables
# events causing all Motion to be written to one single mpeg file and no pre_capture.
gap 60

# Maximum length in seconds of an mpeg movie
# When value is exceeded a new mpeg file is created. (Default: 0 = infinite)
#ОЧЕНЬ ВАЖНЫЙ ПАРАМЕТР!
Чтобы захваченный файл не был большим, его продолжительность можно ограничить параметром max_mpeg_time, указав в качестве значения время в секундах.
max_mpeg_time 180

# Output ‘normal’ pictures when motion is detected (default: on)
# Valid values: on, off, first, best, center
# When set to ‘first’, only the first picture of an event is saved.
# Picture with most motion of an event is saved when set to ‘best’.
# Picture with motion nearest center of picture is saved when set to ‘center’.
# Can be used as preview shot for the corresponding movie.
#Это параметр указывает какой скриншот с движением сохранить, по умолчанию стоит на on это не круто так как он будет сейвить все подряд, по истечении 1 часа у вас их будет 10000~
по этому ставим или best (лучший), или first (первый)
output_normal off

# Output pictures with only the pixels moving object (ghost images) (default: off)
#ничего не трогаем!
output_motion off

# Use ffmpeg to encode mpeg movies in realtime (default: off)
#ВАЖНЫЙ ПАРАМЕТР! Так как именно он указывает motion что нада сохранять видео,
#нам нужно именно видео, по дефолту стоит off переключаем на on
ffmpeg_cap_new on

# Codec to used by ffmpeg for the video compression.
# Timelapse mpegs are always made in mpeg1 format independent from this option.
# Supported formats are: mpeg1 (ffmpeg-0.4.8 only), mpeg4 (default), and msmpeg4.
# mpeg1 – gives you files with extension .mpg
# mpeg4 or msmpeg4 – gives you files with extension .avi
# msmpeg4 is recommended for use with Windows Media Player because
# it requires no installation of codec on the Windows client.
# swf – gives you a flash film with extension .swf
# flv – gives you a flash video with extension .flv
# ffv1 – FF video codec 1 for Lossless Encoding ( experimental )
# mov – QuickTime ( testing )
#тут большая запарка, так как если ставить кодек mpeg4 или mpeg1 после запуска motion вам радостно сообщит что не может найти кодек в системе, этот #вопрос решается по разному, самый простой способ, это установить кодек ffv1 записать пару минут видео и открыть с помощью Totem, который сообщит #что не может проиграть файл и автоматически найдет нужный кодек, вам останеться кликнуть ок, дождаться загрузки, и вууаля, видео будет классно #проигрыватсья и никаких проблем.
ffmpeg_video_codec mpeg4

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
#здесь укажите каталог куда бы вы хотели что-бы сохранялось видео и скрины.
target_dir /home/user/new

# The mini-http server listens to this port for requests (default: 0 = disabled)
#Это ваш порт на localhost ничего трогать не нада.
webcam_port 7777

# Quality of the jpeg images produced (default: 50)
#По вкусу
webcam_quality 50

# Output frames at 1 fps when no motion is detected and increase to the
# rate given by webcam_maxrate when motion is detected (default: off)
#ставим 20, это оптимальное значение, по дефолту off — это не хорошо
webcam_motion 20

# Maximum framerate for webcam streams (default: 1)
#та же история по дефолту 1, ставим 20 — что есть нормально
webcam_maxrate 20

# Restrict webcam connections to localhost only (default: on)
#Если Вы хотите удаленно через web интерфейс просматривать реальную картинку на камере, то необходимо выставить off, если on - то через web
#сможете смотреть только на localhost.
webcam_localhost off


И так запускаем motion (с правами рута обязательно):
sudo motion -n


(К сожалению у меня запустилось только в таком виде: LD_PRELOAD=/usr/lib/libv4l/v4l2convert.so motion -n )
если библиотека v4l2convert.so не установлена, то поставим ее sudo apt-get install libv4l-0

Смотрим на вывод, там не должно быть слов error, missing, fatal, signature, cannot find codec, ошибка, cannot save и т.д. Зато должны быть оповещающие вас о том, что запущен мини http-server, и некоторая техническая информация.
Теперь откройте браузер и введите в адресной строке http://localhost:7777/
7777 — это наш порт (смотри конфиг)
localhost — так как видео транслируется на локальную машину, для трансляции видео на машину в сети значение нужно менять (смотри конфиг)

Теперь ваша камера четко палит за происходящим, если в ее поле зрение попадает движущийся объект то сразу стартует запись, после того как объкт отвалил, запись продолжается 180 секунд, далее ролик не пишется, т.е. Не отъедает место на винте. Короче говоря motion начинает писать только в случае обнаружения движения.

Так же для более четкого отображения записей я задал параметры:
snapshot_filename %Y-%m-%d/snapshot/%H-%M-%S
jpeg_filename %Y-%m-%d/jpeg/%H-%M-%S-%q
movie_filename %Y-%m-%d/movie/%H-%M-%S-%v

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

Настройка захвата
Секция “Motion Detection Settings”, расположенная в самом конце конфигурационного файла, отвечает за тонкую настройку обнаружения движущихся объектов. Если камера стоит в комнате, и тушка входящего перекрывает объектив, проблем с обнаружением обычно нет. Вмешательство потребуется в том случае, когда камера контролирует большую территорию, где объект имеет относительно маленький размер, и срабатывание может быть вызвано колыханием веток деревьев, проезжающими машинами и прочими помехами. На дешевых девайсах запись может начинаться из-за артефактов, вызванных искажениями самой камеры или поведением драйвера.

Например, threshold позволяет указать количество пикселей, которые должны измениться для срабатывания детектора, а minimum_motion_frames – количество кадров, в котором они зафиксированы. Подобрав эти значения, можно сделать так, что Motion не будет замечать пролетающую птицу, но без проблем реагировать на человека. Фильтры для сглаживания шума подключаются при помощи despeckle. По умолчанию используется оптимальное значение EedDl. При появлении проблем следует поэкспериментировать, убирая буквы в сочетании EedDl и пробуя их в разных комбинациях (подробнее о despeckle смотри на WiKi Motion и на emit.demon.co.uk/motion).

Параметры noise_level, noise_tune, night_compensate и lightswitch отвечают за уровень порога шума и компенсацию темных и светлых участков.

Комбинация параметров pre_capture, post_capture и gap позволяет записать законченную сцену, где будет снят контролируемый объект до и после того, как было обнаружено движение. Значение gap по умолчанию установлено в оптимальные 60 (секунд), если движение не будет обнаружено, то создается новый видеофайл, а старый удаляется. Чтобы захваченный файл не был большим, его продолжительность можно ограничить параметром max_mpeg_time, указав в качестве значения время в секундах.

Параметров в motion.conf очень много, обо всех рассказать не получится. Но остался еще один, о котором следует знать. Например, поставил ты камеру в общежитии на кухне, где топчется много народу, но тебя интересуют лишь те, которые лазят в холодильник. Без проблем, делаем снимок камерой, создаем маску, в которой нужная область окрашена белым, а все остальное, что нас не интересует, черным. Сохраняем его в файле формата pgm и указываем путь при помощи mask_file. Все. Холодильник с пивом под присмотром.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
<
diowithjoca

26 октября 2013 12:43

Информация к комментарию
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • 0 публикаций
  • 0 комментариев

достоинства вашего сайта в том что на нем много полезных статей wink я часто сюда захожу wink мне нравится.

<
Александр

22 марта 2015 09:34

Информация к комментарию
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • 0 публикаций
  • 0 комментариев
Дорогие друзья. Подскажите пожалуйста - для того, чтобы фиксировать не видео, а фото-мне просто нужно указать в строке ffmpeg_time laps вместо нуля интервал регистрации в секундах, а в ffmpeg_cap_new прописать off. Большое спасибо.
<
sluggard

23 марта 2015 22:48

Информация к комментарию
  • Группа: Администраторы
  • ICQ:
  • Регистрация: 10.10.2011
  • Статус: Пользователь offline
  • 36 публикаций
  • 32 комментария
для снимков вам необходимо использовать параметр
snapshot_interval 120
где 120 интервал между снимками в секундах.
<
Александр

25 марта 2015 13:27

Информация к комментарию
  • Группа: Гости
  • ICQ:
  • Регистрация: --
  • Статус:
  • 0 публикаций
  • 0 комментариев
А параметр output_pictures можно ли настроить кроме on off например задать интервал. А то у меня молотит при обнаружении 2 фото в секунду. И ещё пожалуйста если не трудно подскажите где искать причину отсутствия потока видео в интернет (хотя бы в локалку). Все инструкции пробовал. Может что не догоняю?
<
sluggard

26 марта 2015 23:59

Информация к комментарию
  • Группа: Администраторы
  • ICQ:
  • Регистрация: 10.10.2011
  • Статус: Пользователь offline
  • 36 публикаций
  • 32 комментария
для удаленного доступа к просмотру с других машин необходимо настроить следующие параметры:
webcam_port 8081
webcam_localhost on

для скриншотов движущихся объектов попробуйте поменять значения параметра:
output_normal best
# Варианты сохранения скриншота с движением - все подряд(on), ни одного(off), первый с начала движения (first),
# лучший (best) или с движением ближе к центру изображения (center).(По умолчанию: on)
# Возможные значения: on, off, first, best, center

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите код: *