Motion?..
Публикации - Motion


Видео приложение Motion (http://www.lavrsen.dk/twiki/bin/view/Motion/WebHome), к которому написано множество дополнений и расширений свободным сообществом, позволяет создать любому желающему (конечно, при некотором имеющемся запасе знаний) недорогую охранную систему для своего жилища или офиса.


 

Программа включает в себя отличный детектор движения, возможность реализации видеоинформации в mjpeg, ppm, или mpeg потоках с записью на винчестер, передачу файлов на ftp-сервер и многое, многое другое.
В большинстве дистрибутивов Linux, поставляемое ядро включает драйвера video4linux, разработкой значительной части которых занимается Gerd Knorr.
В продаже (не только в специализированных магазинах) чаще всего можно встретить карты видеозахвата, использующие видеодекодеры: BT878, CX2388x (Connexant Fusion) и SAA713x (Philips), с разрядностью АЦП: 8, 10, 9 bit соответственно.
Как правило, различают два класса устройств - с аппаратным сжатием и без такового.
В своих экспериментах по "захвату" видео я использую старенькую плату AverMedia на bt878, имеющую три аналоговых видео входа: два композитных и один S-VIDEO.
Модули на моем компьютере (ОС Ubuntu 8.10) размещены в каталоге: /lib/modules/ХХХХХХ/kernel/drivers/media/video (ХХХХХХ в моем случае: "2.6.27-7-generic".
Итак, вначале нужно определить тип платы при помощи утилит "lspci" (пакет pciutils) и "v4l-info" (пакет xawtv).

У меня:

Код:
~$ lspci
 
Код:
 
02:00.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)

Затем:

 

Код:

~$ v4l-info /dev/video0 | head

Код:
### v4l2 device info [/dev/video0] ###
general info
VIDIOC_QUERYCAP
driver : "bttv"
card : "BT878 video (ProVideo PV143)"
bus_info : "PCI:0000:02:00.0"
version : 0.9.17
capabilities : 0x5000015 [VIDEO_CAPTURE,VIDEO_OVERLAY,VBI_CAPTURE,READWRITE,STREAMING]


Обращаем внимание на строку, начинающуюся с "card". В моем случае установлен модуль (драйвер) - PV143, однако чаще всего при выполнении v4l-info можно увидеть нечто:
card : "BT878 video *** UNKNOWN/GENER", что означает неправильное определение карты системой...
В каталоге, например: "/usr/src/хххххх/drivers/media/video" находим соответствующую вашему видеокодеру папку, причем "хххххх" у меня: "linux-source-2.6.27-7", а нужная папка - "bt8хх".
В этой папке находим заголовочный файл "bttv.h", а в файле - свой драйвер.
#define BTTV_BOARD_PV143 0x69
У меня установлен - PV143.

Выгрузим драйвер:

Код:
~$ sudo rmmod bt878 bttv

И загрузим выбранный:

 

Код:

~$ sudo modprobe -v bttv card=0x69  tuner=-1 autoload=0

Проверим, что получилось:

 

Код:

~$ v4l-info | head

Код:
### v4l2 device info [/dev/video0] ###
general info
    VIDIOC_QUERYCAP
    driver                  : "bttv"
    card                    : "BT878 video (ProVideo PV143)"
    bus_info                : "PCI:0000:02:00.0"
    version                 : 0.9.17
    capabilities            : 0x5000015 [VIDEO_CAPTURE,VIDEO_OVERLAY,VBI_CAPTURE,READWRITE,STREAMING]

Все ОК!
Для того, чтобы посмотреть картинку, можно использовать, например, программу "TVtime", ну или тот же "xawtv".
Итак, если все установилось нормально, можно прописать драйвер в автозагрузку.
В Ubuntu, например, в каталоге "/etc/modprobe.d" создается файл "video4linux" и в него прописываются строки:

Код:
alias char-major-81-0 bttv
options bttv card=0x69 tuner=-1 autoload=0

Все. Далее можно приступать к установке "Motion".

Motion берем отсюда (если в репозитории отсутствует): "http://sourceforge.net/project/showfiles.php?group_id=13468&package_id=153327"
Не забываем так же об ffmpeg и ffmpeg-devel

После установки пакетов motion создает в каталоге: /etc/motion примеры конфигурационных файлов - motion.conf, thread1.conf thread2.conf thread3.conf thread4.conf
Настройка программы в общем-то сводится к настройке именно этих файлов.
Рассмотрим главный из указанных, а именно - motion.conf. Вот, один из примеров установки параметров в этом файле (вытащил из своей системы):

 

Код:

daemon off
process_id_file /var/run/motion.pid
setup_mode off
norm 0
frequency 0
rotate 0
width 768
height 576
framerate 100
minimum_frame_time 0
auto_brightness off
brightness 0
contrast 0
saturation 0
hue 0
roundrobin_frames 0
roundrobin_skip 0
switchfilter off
threshold 1500
threshold_tune on
noise_level 32
noise_tune on
night_compensate off
despeckle EedDl
lightswitch 0
minimum_motion_frames 5
pre_capture 0
post_capture 150
gap 60
max_mpeg_time 0
low_cpu 0
output_all off
output_normal off
output_motion off
quality 75
ppm off
ffmpeg_cap_new on
ffmpeg_cap_motion off
ffmpeg_timelapse 0
ffmpeg_timelapse_mode manual
ffmpeg_bps 400000
ffmpeg_variable_bitrate 0
ffmpeg_video_codec ffv1
ffmpeg_deinterlace off
snapshot_interval 0
locate off
text_right %Y-%m-%d\n%T
text_double off
jpeg_filename %d-%m-%Y__%H:%M:%S-%q
movie_filename %d-%m-%Y__%H:%M:%S
control_port 8080
control_localhost off
control_html_output on
quiet on
video_pipe '-'

# config file for each camera in addition to this config file.
######################################
thread /etc/motion/thread1.conf
thread /etc/motion/thread2.conf
thread /etc/motion/thread3.conf
thread /etc/motion/thread4.conf

Конечно, я использовал не все опции, которые существуют в исходнике, а лишь те, которые необходимы мне.
Полный список параметров можно посмотреть здесь:(http://www.lavrsen.dk/twiki/bin/view/Motion/ConfigFileOptions)
Постепенно разберем их все, а пока посмотрим на те, которые я указал в своем файле motion.conf

Сколько камер, столько и файлов thread.conf
Конечно, для наглядности их можно было бы назвать, например camera1.conf, camera2.conf... и т.д.
В главном конфигурационном прописываются параметры для всех тв камер, а в тех, что... camera"№".conf - индивидуальные.
Например, если камеры с разным разрешением, то в главном не указывается ничего об этом, а в отдельных:

Код:
#/etc/motion/camera1.conf
width 768
height 576
////////////////////////////

#/etc/motion/camera2.conf
width 640
height 480
////////////////////////////

Аналогично с видеовходами и картами:

Код:
#/etc/motion/camera1.conf
videodevice /dev/video0
input 0
////////////////////////////

#/etc/motion/camera2.conf
videodevice /dev/video1
input 2
////////////////////////////

Продолжим, помолясь...
Настройка программы в общем-то сводится к настройке именно этих файлов.
Рассмотрим главный из указанных, а именно - motion.conf. Вот, один из примеров установки параметров в этом файле (вытащил из своей системы):

 

Код:

daemon off
process_id_file /var/run/motion.pid

С этими все понятно, надеюсь.

Код:
setup_mode off

В этом режиме, заменив "off" на "on" можно посмотреть в консоли работу детектора движения. Особой пользы от оспользования этого параметра я не заметил.

Код:
norm 0

Стандарт. По умолчанию используется 0, то есть PAL. Значения: 1 - NTSC, 2 – SECAM и 3 PAL NC.

Код:
frequency 0

Этот параметр в (kHz) используется в том случае, если есть тюнер. По умолчанию frequency = 0 (не используется).

Код:
rotate 0

Поворот изображения на заданное число в градусах. Возможные значения: 0, 90, 180, 270. По умолчанию 0 (не используется).
Вращение влияет на все сохраненные изображения, в том числе и на MPEG файлы.

Код:
width 768
height 576

С этим параметром все понятно. Установка видеоразрешения по горизонтали и вертикали (4:3).

Код:
framerate 100

Установка частоты кадров. Значение framerate 100 указывает программе, что следует использовать системные настройки карт видеозахвата. Например, для PAL реального времени этот параметр - 25
Реально, если используем 1 вход в трехвходовой карте, пишем 25. Если используем два входа, то больше 6 - 8 кадров не получить, как не старайся. Три входа - где-то 3 - 4 кадра, не больше, да и то, в лучшем случае, поскольку видеосигналы с камер рассинхронизированы.

Обсуждение статьи на форуме...

 

 

Меню сайта



vlor на Словенске