Сегодня я хочу рассказать про организацию программной системы видеонаблюдения под Linux Gentoo. Цена готовой системы на 3 камеры — 40$.
Имеется в наличии:
- Заказанная с китайского сайта плата видеозахвата на контроллере Bt848/Bt848a/Bt849/Bt878/Bt879. Данную плату я покупал специально под FreeBSD, ибо фряха больше ничего не поддерживала. Найти такую плату можно по словам «DVR Capture».
- Несколько китайских аналоговых камер.
- Необходимое количество метров витой пары для подключения камер. Конечно, есть специальные провода для аналоговых камер, но можно использовать и витуху, если расстояние до камеры не очень большое.
- Желание.
Прикручиваем карту видеозахвата в систему
Для начала необходимо определить на каком чипсете работает наша карта. Узнать это достаточно просто. Многие продавцы указывают в описании какой чип используется в плате видеозахвата. Если продавец не указал название чипа, то можно просто взглянуть на плату, найти самую большую деталь и прочитать название. В моем случае это — Bt879. Второе, что нужно сделать — собрать ядро с необходимым модулем. Для пересборки ядра я использовал genkernel:
genkernel --menuconfig --kernel-config=/etc/kernels/kernel-config-x86_64-3.5.7-gentoo all
Device Drivers [*] Multimedia support [*] Video For Linux Device Drivers [*] Multimedia support [*] Video capture adapters [*] V4L PCI(e) devices [M] BT848 Video For Linux
После успешной компиляции, если необходимо, не забудьте подправить конфиг загрузчика (обычно grub — /boot/grub/grub.conf). После перезагрузки мы увидим, что у нас в системе появилось устройство /dev/video0. Если оно не появилось, то значит у вас не BT848 и нужно включить в ядро что-то другое. Однако, хоть устройство и определилось в системе, но оно может работать некорректно. У меня это проявлялось очень странно картинкой получаемой с карты видеозахвата. Необходимо загрузить модуль, явно указав какая плата видеозахвата используется. Для начала выгрузим модуль:
rmmod bt878 bttv
Далее, находим нашу карту:
less /usr/src/linux-3.5.7-gentoo/drivers/media/video/bt8xx/bttv.h
Для моей карты видеозахвата подошло:
#define BTTV_BOARD_PV143 0x69
Так же рекомендую использовать «0x69», если не удалось определить какая именно карта у вас установлена.
Теперь нам необходимо подгрузить модуль обратно в ядро, но уже явно указав какую карту необходимо использовать:
modprobe -v bttv card=0x69 tuner=-1 autoload=0
Осталось только добавить модуль в автозагрузку:
echo "options bttv card=0x69 tuner=-1 autoload=0" > /etc/modprobe.d/video4linux.conf
Настройка Motion
Ничего лучшего, кроме чем Motion для видеонаблюдения я не нашел. В принципе, я не вижу в нем особых недостатков и поэтому выбрал его для своей системы. Добавим в package.use необходимые USE флаги и установим motion:
echo "media-video/motion mysql ffmpeg v4l" >> /etc/portage/package.use emerge -av media-video/motion
После установки нам становится доступен конфигурационный файл, расположенный в /etc/motion.conf. Расположение файла конфигурации по-умолчанию мне не очень нравится, поэтому я переместил его в /etc/motion/motion.conf и создал символьную ссылку с /etc/motion.conf. А расположение мне не нравится потому, что конфиг motion подразумевает разнесение конфигов камер на несколько файлов. То есть каждую камеру можно настроить отдельно и вынести все эти настройки в разные файлы.
Если вы хотите настроить motion под себя, то рекомендую прочитать конфиг, там имеются довольно понятные комментарии. А для тех кто ленится, то можно мне поверить и внести некоторые изменения:
# /etc/motion/motion.conf width 720 height 480 norm 0 threshold 1000 despeckle EedDl ffmpeg_video_codec mpeg4 ffmpeg_deinterlace on webcam_localhost off jpeg_filename %d.%m.%Y/CAM%t-%d.%m.%Y-%H:%M:%S movie_filename %d.%m.%Y/CAM%t-%d.%m.%Y-%H:%M:%S timelapse_filename %d.%m.%Y/CAM%t-%d.%m.%Y-timelapse thread /etc/motion/thread1.conf
Создадим файл конфигурации камеры:
# /etc/motion/thread1.conf videodevice /dev/video0 input 1 text_left CAMERA 1 target_dir /var/cam/cam1 webcam_port 8081
Остальные камеры можно добавить аналогично.
Настройка завершена и можно попробовать включить motion. Для начала запустим его в режиме дебага, чтобы убедится, что все работает нормально:
motion -n -c /etc/motion/motion.conf
Открыв в браузере http://<ip>:8081/ мы должны увидеть изображения в камере. После того как произойдет движение, должна начаться запись и в /var/cam/cam1 появится .avi файл.
На этом первоначальная настройка Motion завершена. Но для меня это оказалось недостаточно. Мы собирали Motion с поддержкой MySQL, а это значит, что Motion может каким-то образом взаимодействовать с базой. Но подкручивание MySQL это уже тема для отдельного поста.
0 Комментарии。