Главная > Настройка Ubuntu > Сервер видеонаблюдения на базе Ubuntu Server

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


6-01-2012, 17:08. Разместил: sluggard
Конфиг очень подробно прокомментирован на детском английском, по этому уделив ему пол часа времени, вы точно будете знать как именно нужно делать и какие настройки менять, что-бы получить желаемый результат.
Я приведу основные важные моменты в моем случае.


# 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. Все. Холодильник с пивом под присмотром.
Вернуться назад