неділю, 4 березня 2012 р.

Домашний сервер на Ubuntu (часть 6). Домашняя система видеонаблюдения

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

В качестве камеры наблюдения я выбрал простенькую веб-камеру LifeCam VX-1000 от Microsoft-а с разрешением 640*480 точек. Дополнительных драйверов на него не понадобилось, все заработало сразу после подключения.

Узнать подключена ли ваша камера в данный момент можно командой:

ls /dev/video*

В ответ вы увидите строку /dev/video0. Если вы подключили несколько камер, соответственно каждая следующая будет идти по порядку video1, video2 и т. д. Напомню, что в убунту нумерация устройств начинается с нуля.

Если вместо этого вы увидите строку

ls: невозможно получить доступ к /dev/video*: Нет такого файла или каталога

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

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

lsusb

В ответ вы увидите все подключенные usb устройства. У меня выходит следующее:

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 023: ID 045e:00f7 Microsoft Corp. LifeCam VX-1000
Bus 001 Device 005: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
Bus 001 Device 004: ID 07d1:3c07 D-Link System Wireless G DWA-110 Adapter
Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 002: ID 04b8:0007 Seiko Epson Corp. Printer
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

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

Звук. Если вы хотите не только смотреть, но еще и слышать, вам понадобится отдельный микрофон, если ваша камера без встроенного микрофона. Cейчас большинство камер идут с микрофоном. Давайте проверим это. Наберите в терминале команду arecord -l. В ответ вы получите список устройств с микрофоном. У меня камера с микрофоном и еще есть микрофонный вход на материнке:

**** Список CAPTURE устройств ****
карта 0: ICH [Intel ICH], устройство 0: Intel ICH [Intel ICH]
Подустройства: 0/1
Подустройство №0: subdevice #0
карта 0: ICH [Intel ICH], устройство 1: Intel ICH - MIC ADC [Intel ICH - MIC ADC]
Подустройства: 1/1
Подустройство №0: subdevice #0
карта 1: camera [USB camera], устройство 0: USB Audio [USB Audio]
Подустройства: 1/1
Подустройство №0: subdevice #0

Если с камерой все гуд, перейдем к делу.

Способ первый: ffmpeg

Наверно многие знают, а быть может и применяют этот замечательный набор библиотек для работы с аудио и видео данными – ffmpeg. Официальный сайт разработчиков http://ffmpeg.org

Ffmpeg умеет записывать, конвертировать и передавать цифровое аудио и видео в различных форматах. А также захватывать изображение с камер. То, что нам нужно!

Установка

sudo apt-get install ffmpeg

В составе ffmpeg присутствует ffserver – медиа-сервер, который может раздавать по сети аудио-видео данные полученные от ffmpeg.

Настроечный файл ffserver-а лежит в /etc/ffserver.conf

# Порт сервера. Можно поменять на любой другой свободный порт
Port 8090

# Если у вас на сервере несколько ip-адресов, выберите тот, на котором будет вещать ffserver.
# 0.0.0.0 означает любой адрес
BindAddress 0.0.0.0

# Количество одновременных http подключений к серверу
MaxHTTPConnections 10

# Количество одновременных запросов, которые могут быть обработаны
MaxClients 10

# Ширина канала на передачу ваших трансляций в кбит/сек
MaxBandwidth 1000

# Путь к лог-файлу доступа (используется формат файла журналов Apache)
# '-' означает стандартный вывод.
CustomLog -
# Закомментируйте эту строку если хотите запускать сервер в режиме демона.
# Советую на время подбора настроек использовать NoDaemon-режим
NoDaemon

##################################################
# Далее идут настройки фидов
# Каждый фид содержит один видео и (или) звуковой поток, получаемый
# от ffmpeg или другого ffserver-а
# Название фида. В данном примере feed1.ffm
<Feed feed1.ffm>

# Путь, где будут храниться фиды
File /tmp/feed1.ffm
# Максимальный размер фида (здесь 5 МБ)
FileMaxSize 5M

# Автозапуск ffmpeg при запуске ffserver-а.
# После того как подберете оптимальные настройки,
# можно здесь указать параметры запуска ffmpeg,
# чтобы не запускать вручную
#Launch ffmpeg [параметры]

# Разрешить соединения только с локалхоста.
# Закомментируйте, если хотите смотреть с других компьютеров
ACL allow 127.0.0.1

</Feed>

# Настройки фида на этом заканчиваются.

##################################################################
# Дальше идут настройки потоков.
# Их может быть несколько, зависит от ваших потребностей

# Первый фид test1.mpg
<Stream test1.mpg>

# источник потока feed1, который настроили чуть выше
Feed feed1.ffm

# Выберите формат потока:
# mpeg       : MPEG-1 звук и видео
# mpegvideo  : только MPEG-1 видео
# mp2        : MPEG-2 только звук
# ogg        : Ogg (Vorbis)
# rm         : RealNetworks-совместимый поток. Звук и видео
# ra         : RealNetworks-совместимый поток. Только звук.
# mpjpeg     : Multipart JPEG (works with Netscape without any plugin)
# jpeg       : Одиночные JPEG изображения.
# asf        : ASF (формат Windows Media Player).
# swf        : Macromedia Flash
# avi        : AVI (видео MPEG-4, звук MPEG)
# Выбираем желаемый формат из списка выше. В данном примере mpeg
Format mpeg

# Битрейт звука
AudioBitRate 32

# 1 = моно, 2 = стерео
AudioChannels 1

# Частота дискретизации звука
AudioSampleRate 44100

# Битрейт видео
VideoBitRate 64

# Размер буффера
VideoBufferSize 40

# Количество кадров в секунду
VideoFrameRate 3

# Разрешение видео: ширина*высота (по умолчанию: 160x128)
# Можно писать сокращенно: sqcif, qcif, cif, 4cif, qqvga,
# qvga, vga, svga, xga, uxga, qxga, sxga, qsxga, hsxga, wvga, wxga, wsxga,
# wuxga, woxga, wqsxga, wquxga, whsxga, whuxga, cga, ega, hd480, hd720,
# hd1080. Это разрешение должно совпадать с тем, которое вы будете
# передавать в параметрах ffmpeg
VideoSize 160x128

# Передавать только внутренние (intra) кадры
# (используется низкий битрейт, чтобы уменьшить количество кадров).
#VideoIntraOnly
# Не разобрался, что это за параметр. Кажется означает расстояние
# между соседними кадрами. Зависит от вкл/выкл предыдущего параметра
VideoGopSize 12

# Дополнительные настройки MPEG-4
# VideoHighQuality
# Video4MotionVector

# Выберите кодеки:
#AudioCodec mp2
#VideoCodec mpeg1video

# Раскомментируйте, если не хотите передавать звук
#NoAudio

# Раскомментируйте если не хотите передавать видео
#NoVideo

# Минимальное и максимальное качество видео (1 - самое лучшее)
VideoQMin 1
VideoQMax 31

# Задержка для буферизации в проигрывателях
#Preroll 15

# Управление доступом:
# Здесь можно задать список разрешенных для подключения ip-адресов
#ACL ALLOW <first address> <last address>

# Список запрещенных адресов
#ACL DENY <first address> <last address>

# Конец настроек первого потока
</Stream>

# Дальше в оригинальном конфиге идут примеры потоков.
# Я не буду их здесь переписывать, посмотрите сами, там все понятно.

# В конце конфига есть еще парочка интересных строчек

# Спец. потоки
# Статус сервера
# Страница будет доступна по адресу http://ip_сервера:порт/stat.html
<Stream stat.html>
Format status

# Кому разрешаем смотреть статус сервера
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255

# Также можно задать иконку страницы
FaviconURL /home/username/favicon.ico
</Stream>

# Перенаправлять index.html на сайт разработчиков ffmpeg
#<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>

Мой конфиг выглядит так:

Port 8093
BindAddress 192.168.1.200
MaxHTTPConnections 10
MaxClients 10
MaxBandwidth 20000
#NoDaemon

<File /tmp/feed.ffm>
FileMaxSize 3M
</Feed>

<Stream video.swf>
Feed feed.ffm
# Будет запускаться в Adobe Flash Player
Format swf
VideoCodec flv
VideoFrameRate 15
VideoBufferSize 50000
VideoBitRate 200
VideoSize 640x480
</Stream>

<Stream status.html>
Format status
</Stream>

Все настроили, запускаем. Сервер запускается командой ffserver. Если вы что-то неправильно написали в настройках, ffserver при запуске выдаст ошибки, с указанием того, что надо подправить. Для ffmpeg нужно задать параметры запуска:

ffmpeg -s 640x480 -r 15 -f mjpeg -i /dev/video0 http://ip:port/feed

-s – разрешение, должно быть таким в конфиге ffserver. Не выставляйте разрешение большее, чем может передать ваша веб-камера.

-r – количество кадров/секунду. Здесь также ориентируйтесь на возможности камеры. Моя, например, выдает 30 кадров в секунду при разрешении 320*240, и всего 15 кадров при разрешении 640*480.

-f – формат видео получаемый с камеры. В большинстве случаев подойдет формат video4linux2. В зависимости от камеры можете попробовать video4linux (video4linux1). Моя камера заработала только с форматом mjpeg.

-i – путь к камере. Если у вас одна камера, то путь всегда будет /dev/video0. Про это я писал в начале статьи.

http://ip:port/feed – это адрес нашего фида. ip – это ip-адрес вашего сервера, feed – адрес вашего фида, который указан в настройках выше. У меня эта строка выглядит так http://192.168.1.200:8093/myfeed.ffm.

Теперь открывайте в браузере http://192.168.1.200:8093/video.swf (или вы могли дать потоку другой адрес) и вы увидите трансляцию с вашей камеры.

По адресу http://192.168.1.200:8093/status.html можно посмотреть статус сервера и доступные для просмотра трансляции.

Приведу еще два примера использования ffmpeg. Вот так можно транслировать из файла вместо камеры:

ffmpeg -i /home/username/testvideo.avi -s qcif -r 15 -ac 1 -ar 8000 -b 30 -ab 12 http://localhost:8090/feed.ffm

Вот так можно передавать свой рабочий стол:

ffmpeg -f x11grab -r 30 -s 640x480 -i :0.0 http://localhost:8090/feed.ffm

Из минусов ffmpeg-а могу отметить только то, что если ваш сервер многоядерный, ffmpeg будет использовать только одно ядро. Макисмальное количество одновременных соединений, которое сможет выдержать ffserver – 5000. Для домашнего использования этого больше, чем достаточно. Даже если вы будете транслировать видео на своем сайте, вряд ли его одновременно будут смотреть более 5000 человек. Если конечно у вас не видео-хостинг типа ютуба.

Способ второй: motion

Motion не менее замечательная вещь для организации видео наблюдения с помощью веб-камеры. Плюсом motion-а является встроенный датчик движения. Т. е. нам не обязательно вести запись с камеры постоянно. Пока движения нет, запись не будет вестись, как только в зоне наблюдения появится движение motion начнет запись.

Официальный сайт разработчиков http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome.

Установка

sudo apt-get install motion

Конфиг очень большой, но многое там можно оставить как есть. Достаточно указать путь к вашей камере и запустить motion. Но мы ведь легких путей не ищем и будем тонко подстраивать все под себя. Файлик тут /etc/motion/motion.conf. Рассмотрим его подробно, чтобы понять как все устроено, а потом выкинем из него все лишнее.

############################################################
# Демон
############################################################
# Запуск в режиме демона (по умолчанию: off)
daemon off

# Файл для хранения идентификатора процесса (ID)
process_id_file /var/run/motion/motion.pid 

############################################################
# Основной режим установки
############################################################
# Запсутить в режиме установки, демон отключается
setup_mode off

###########################################################
# Параметры устройства захвата
############################################################

# Адрес вашей камеры в системе. Как определить писал в начале статьи.
videodevice /dev/video0

# Выберите палитру поддерживаемую вашей камерой.
# По умолчанию: 8 (подходит для большинства)
# V4L2_PIX_FMT_SN9C10X : 0  'S910'
# V4L2_PIX_FMT_SBGGR8  : 1  'BA81'
# V4L2_PIX_FMT_MJPEG   : 2  'MJPEG'
# V4L2_PIX_FMT_JPEG    : 3  'JPEG'
# V4L2_PIX_FMT_RGB24   : 4  'RGB3'
# V4L2_PIX_FMT_UYVY    : 5  'UYVY'
# V4L2_PIX_FMT_YUYV    : 6  'YUYV'
# V4L2_PIX_FMT_YUV422P : 7  '422P'
# V4L2_PIX_FMT_YUV420  : 8  'YU12'
v4l2_palette 8

# Настройки тв-тюнера. Нам они не нужны
; tunerdevice /dev/tuner0

# Здесь тоже ничего не меняем. 8 - юсб-камера, 0-1 для тв-тюнера
input 8

# Эта настройка тоже касается тв-тюнера и нам не нужна
# Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
norm 0

# Частота канала тв-тюнера
frequency 0

# Поворот изображения. По умолчанию 0 (не поварачивать),
# можно выбрать поворот на 90, 180 и 270 градусов.
rotate 0

# Ширина картинки в пикселях. По умолчанию: 352
width 640

#  Высота картинки. По умолчанию: 288
height 480

# Количество кадров в секунду.
# От 2 до 100 в зависимости от камеры.
# Чем большее количсевто кадров выбрать, тем больше будет нагрузка на компьютер
framerate 15

# Минимальное время между захватом двух кадров. По умолчанию отключено (0).
# Если, например, выбрать 3, то кадры будут захватываться каждые 3 секунды
minimum_frame_time 5

# Адрес сетевой камеры или потока<
; netcam_url value

# Логин-пароль для предыдущего параметра
# Синтаксис имя_пользователя:пароль
; netcam_userpass value

# Опять пропускаем
# The setting for keep-alive of network socket, should improve performance on compatible net cameras.
# 1.0:         The historical implementation using HTTP/1.0, closing the socket after each http request.
# keep_alive:  Use HTTP/1.0 requests with keep alive header to reuse the same connection.
# 1.1:         Use HTTP/1.1 requests that support keep alive as default.
# Default: 1.0
; netcam_http 1.0

# URL to use for a netcam proxy server, if required, e.g. "http://myproxy".
# If a port number other than 80 is needed, use "http://myproxy:1234".
# Default: not defined
; netcam_proxy value 

# Set less strict jpeg checks for network cameras with a poor/buggy firmware.
# Default: off
netcam_tolerant_check off

# Автоматическая регулировка яркости изображения. По умолчанию отключено.
# Практически все камеры умеют это делать сами
auto_brightness off

# Дальше идут настройки яркости, контраста, насыщенности и оттенка.
# Диапазон допустимых значений от 0 до 255. 0 - отключено
brightness 0
contrast 0
saturation 0
hue 0

############################################################
# Round Robin (multiple inputs on same video device name)
############################################################
 # Number of frames to capture in each roundrobin step (default: 1)
roundrobin_frames 1
 # Number of frames to skip before each roundrobin step (default: 1)
roundrobin_skip 1
# Try to filter out noise generated by roundrobin (default: off)
switchfilter off

############################################################
# Настройки датчика движения:
############################################################

# Количество измененных пикселей после чего срабатывает
# датчик движения, т. е. это чувствутиельность датчика.
# Чем меньше это число, тем чувствительней датчик .По умолчанию: 1500
threshold 1500

# Автоматическая регулировка нижнего порога чувствительности
threshold_tune off

# Уровень шума. Позволяет исключить помехи самой камеры.
# По умолчанию: 32
noise_level 32

# Автоматическая регулировка уровня шума
noise_tune on

# Фильтр шумов. Подбирайте оптимальный для вас набор букв EedDl
# Подробней читайте на сайте http://emit.demon.co.uk/motion/
despeckle EedDl

# Этот параметр позволяет выбрать области слежения
# 1 - левый верхний угол
# 2 - верх середина
# 3 - правый верхний угол
# 4 - левая середина
# 5 - центр
# 6 - права середина
# 7 - нижний левый угол
# 8 - низ середина
# 9 - правый нижний угол
; area_detect value

# Путь к PGM-маске движения.
# Что это такое можно почитать тут http://netpbm.sourceforge.net/doc/pgm.html
; mask_file value

# Dynamically create a mask file during operation (default: 0)
# Adjust speed of mask changes from 0 (off) to 10 (fast)
smart_mask_speed 0

# Выравнивание светлых участков
# Диапазон: 0 - 100 , по умолчанию: 0 = отключено
lightswitch 0

# Минимальное количесвто кадров, в которых должно быть
# зафиксировано движение для срабатывания датчика
minimum_motion_frames 1

# Определяет количество предварительно захваченных (буфер) фотографий
# до обнаружения движения. Рекомендуемый диапазон: от 0 до 5 (по умолчанию: 0)
pre_capture 0

# То же, но после отсутствия движения
post_capture 0

# Сколько секунд ждать с момента отсутствия движения
gap 60

# Длина видео файла в секундах. 0 - бесконечно
max_mpeg_time 0

# Сохранять изображения даже если движения не было
# По умолчанию: off
output_all off

############################################################
# Файл изображения
############################################################

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

# Сохранять только изменившуюся часть изображени (?)
output_motion off

# Качество сжатия изображения, в процентах
quality 50

# Сохранять ppm изображение вместо jpeg (по умолчанию: off)
ppm off

############################################################
# Параметры FFMPEG
############################################################

# Записывать видео
ffmpeg_cap_new off

# Записывать только изменившуюся часть изображени
ffmpeg_cap_motion off

# Use ffmpeg to encode a timelapse movie
# Default value 0 = off - else save frame every Nth second
ffmpeg_timelapse 0

# Сколько вести запись в один файл. После превышения предела создаётся новый файл.
# hourly - ежечасно
# daily - ежедневно, по умолчанию
# weekly-sunday - еженедельно, начало недели в воскресенье
# weekly-monday - аналогично с началом в понедельник
# monthly - ежемесячно
# manual - вручную
ffmpeg_timelapse_mode daily

# Битрейт видео (по умолчанию: 400000)
# Этот параметр игнорируется если параметр ffmpeg_variable_bitrate не равен 0 (отключен)
ffmpeg_bps 500000

# Переменный битрейт видео
# Можно установить 0 = фиксированный битрейт заданный выше в параметре ffmpeg_bps,
# или от 2 до 31. 2 лучшее качество, 31 - худшее.
ffmpeg_variable_bitrate 0

# Кодек для сжатия видео
# mpeg1 - файл с расширением .mpg
# mpeg4 или msmpeg4 - файл с расширением .avi
# swf - флешка .swf
# flv - флешка .flv
# ffv1 - кодек FF для сжатия без потерь (эксперементально)
# mov - QuickTime
ffmpeg_video_codec mpeg1

# Деинтерлизация видео
ffmpeg_deinterlace off

############################################################
# Снимки с камеры
############################################################

# Автоматически создавать снимки каждый N секунд. 0 - отключено
snapshot_interval 1

############################################################
# Накладываемый текст
# %Y = год, %m = месяц, %d = день,
# %H = часы, %M = минуты, %S = секунды, %T = HH:MM:SS,
# %v = event, %q = номер кадра, %t = номер камеры,
# %D = измененные пиксели, %N = noise level, \n = new line,
# %i и %J = ширина и высота области движения,
# %K и %L = X и Y координаты центра движения
############################################################

# Рисовать рамку вокруг области с движением
locate off

# Накложение текста в правом нижнем углу
text_right %Y-%m-%d\n%T-%q

# Наложение текста в левом углу
text_left CAMERA %t

# Наложение текстом количества измененных пикселей
text_changes off

# This option defines the value of the special event conversion specifier %C
# You can use any conversion specifier in this option except %C. Date and time
# values are from the timestamp of the first image in the current event.
# Default: %Y%m%d%H%M%S
# The idea is that %C can be used filenames and text_left/right for creating
# a unique identifier for each event.
text_event %Y%m%d%H%M%S

# Увеличить размер шрифта в два раза
text_double on

############################################################
# Папки для сохранения файлов
############################################################

# Папка для сохранения изображений и видео.
# Используйте абсолютные пути.
# По умолчанию - текущая рабочая папка
target_dir /home/username/motion

# Имя файлов для снимка и видео
# Расширение файла добавляется автоматически
snapshot_filename %m%d%v-%Y-%m-%d-%H-%M-%S
jpeg_filename %v-%Y%m%d%H%M%S-%q
movie_filename %v-%Y%m%d%H%M%S
timelapse_filename %Y%m%d-timelapse

############################################################
# Сервер для трансляций
############################################################

# Порт сервера (0 - отключено)
webcam_port 8090

# Качество передаваемой картинки
webcam_quality 20

# Если движения нет битрейт снижается до 1 кадра в секунду
webcam_motion off

# Сколько кадров в секунду передавать (по умолчанию: 1)
webcam_maxrate 1

# Разрешить соединения только с локалхоста
webcam_localhost off

# Лимит подключений
webcam_limit 0

############################################################
# Удаленное управление
############################################################

# Порт. Должен отличаться от webcam_port (0 - отключено)
control_port 8091

# Разрешить соединения только с локалхоста
control_localhost on

# Output for http server, select off to choose raw text plain (default: on)
control_html_output on

# Аутентификация. Синтаксис имя_пользователя:пароль
# По умолчанию отключено
; control_authentication username:password

############################################################
# Внешние команды, варнинги и логирование
# %Y = год, %m = месяц, %d = день,
# %H = часы, %M = минуты, %S = секунды,
# %v = событие, %q = номер кадра, %t = номер камеры,
# %D = изменившиеся пиксели, %N = уровень шума,
# %i и %J =ширина и высота области движения,
# %K и %L = X и Y координаты центра движения
# %C = value defined by text_event
# %f = полный путь к файлу
# %n = тип файла
############################################################

# Звуковой сигнал при обнаружении движения
# Не работает в режиме демона
quiet off

# Далее можно задать свои команды при определенных событиях
# Например, запустить скрипт или отправить вам смску, письмо

# Запуск события при первом движении
; on_event_start value

# Конец события если нет движения в течение нескольких секунд
; on_event_end value

# Сохранение файла изображения
; on_picture_save value

# При обнаружении движения
; on_motion_detected value

# При обнаружении движения в определнной зоне
; on_area_detected value

# При создании видео файла (начало записи в этот файл)
; on_movie_start value

# То же только конец записи в файл
; on_movie_end value

# Если камера перестала работать
; on_camera_lost value

##############################################################
# Важные строчки если вы будете подключать несколько камер
##############################################################

# Если у вас только одна камера, то на этом настройки заканчиваются
# Если у вас более одной камеры, для каждой из них необходимо создать
# отдельный файл с настройками. Содержимое файлов можно скопировать
# с этого файла (/etc/motion/motion.conf) заменив адрес камеры
# и при необходимости пути папок, куда будут сохраняться записи
; thread /usr/local/etc/thread1.conf
; thread /usr/local/etc/thread2.conf
; thread /usr/local/etc/thread3.conf
; thread /usr/local/etc/thread4.conf

Фу-у-х! Кажется всё :-) Вы еще тут? Тогда продолжаем!

Приведу для примера свой конфиг:

daemon off
process_id_file /var/run/motion/motion.pid
setup_mode off
videodevice /dev/video0

v4l2_palette 8
input 8
norm 0

rotate 0
width 640
height 480

framerate 30
minimum_frame_time 0

netcam_tolerant_check off

auto_brightness off
brightness 0
contrast 0
saturation 0
hue 0

threshold 1500
threshold_tune off

noise_level 10
noise_tune on

despeckle EedDl
minimum_motion_frames 3

pre_capture 1
post_capture 1
gap 0

max_mpeg_time 300
output_all off
output_normal first
output_motion off

quality 70

ppm off

ffmpeg_cap_new on
ffmpeg_cap_motion off
ffmpeg_timelapse 0
ffmpeg_timelapse_mode hourly
ffmpeg_bps 400000
ffmpeg_variable_bitrate 5
ffmpeg_video_codec mpeg4
ffmpeg_deinterlace off

snapshot_interval 0
locate off

text_right %Y-%m-%d\n%T-%q
text_left CAMERA %t
text_changes off
text_event %Y%m%d%H%M%S
text_double on

target_dir /home/username/motion
snapshot_filename %m/%d/%Y-%m-%d-%H-%M-%S
jpeg_filename %m/%d/%Y-%m-%d-%H-%M-%S
movie_filename %m/%d/%Y-%m-%d-%H-%M-%S
timelapse_filename %m/%d/%Y-%m-%d-%H-%M-%S-timelapse

webcam_port 8090
webcam_quality 15

webcam_motion on
webcam_maxrate 15

webcam_localhost off
webcam_limit 0

control_port 8091
control_localhost on

control_html_output on
control_authentication username:password

quiet off
; on_event_start value
; on_event_end value
; on_picture_save value
; on_motion_detected value
; on_area_detected value
; on_movie_start value
; on_movie_end value
; on_camera_lost value

Запускаем:

motion - c /etc/motion/motion.conf

параметр -с позволяет указать путь к файлу с настройками.

Раньше я пользовался ffmpeg-ом, но сейчас перешел на motion. Запись видео только при появлении движения существенно экономит дисковое пространство. Одна минута записи занимает около 9 МБ. За сутки накапливается 13 ГБ. Естественно это при наличии постоянного движения. А так за сутки в среднем накапливается всего около 3-4 ГБ.

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

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments