Видеонаблюдение в Gentoo

Сегодня я хочу рассказать про организацию программной системы видеонаблюдения под Linux Gentoo. Цена готовой системы на 3 камеры — 40$.

Имеется в наличии:

  1. Заказанная с китайского сайта плата видеозахвата на контроллере Bt848/Bt848a/Bt849/Bt878/Bt879. Данную плату я покупал специально под FreeBSD, ибо фряха больше ничего не поддерживала. Найти такую плату можно по словам «DVR Capture».
  2. Несколько китайских аналоговых камер. 
  3. Необходимое количество метров витой пары для подключения камер. Конечно, есть специальные провода для аналоговых камер, но можно использовать и витуху, если расстояние до камеры не очень большое.
  4. Желание.

Прикручиваем карту видеозахвата в систему

Для начала необходимо определить на каком чипсете работает наша карта. Узнать это достаточно просто. Многие продавцы указывают в описании какой чип используется в плате видеозахвата. Если продавец не указал название чипа, то можно просто взглянуть на плату, найти самую большую деталь и прочитать название. В моем случае это — 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 это уже тема для отдельного поста.

 

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>