Программа включает в себя отличный детектор
движения, возможность реализации видеоинформации в 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
кадра, не больше, да и то, в лучшем случае, поскольку видеосигналы с
камер рассинхронизированы.
Обсуждение статьи на форуме... |