Видеонаблюдение через интернет в веб-браузере

avregd: аудио/видео запись и трансляция видео.

avregd является основной программой AVReg, обеспечивающей основные функции:

  • захватывает видео с множества источников (сетевые ip-камеры и устройства video4linux - PCI платы видеозахвата и USB-камеры);
  • кодирует медиа-потоки (если задано) и записывает их на жесткий диск в основные медийные файловые контейнеры (AVI, FLV, MOV, MP3, WAV, OGG);
  • «раздаёт» клиентам видео-потоки в реальном режиме времени:
    • несжатое видео yuv420p посредством video4linux API - локальному просмотрщику avreg-mon и другим стандартным video4linux-просмотрщиками,
    • JPEG/MJPEG по протоколу HTTP - сетевым клиентам, например, веб-браузерам, каскадно включённым другим avregd и стороннему программному обеспечению.

Настройка оборудования для захвата видео/аудио.

  • Cетевые устройства:
  • PCI-платы видеозахвата для подключения CCTV видеокамер с аналоговым композитным видеосигналом;
    • полностью совместимые:
      • актуальные:
        • на декодере saa7134: SDVR-7008 - 8x25fps);
        • на декодерах Techwell tw68 (cм. драйвера):
          • Orient SDVR-404A - 1x1fps или в режиме мультиплексирования: 2х4fps или 3х3fps или 4x2fps;
          • HW-108Q9 (она же может продаваться как Orient HW-G400X) - 4x25fps или в режиме мультиплексирования: 3@25fps+2x4fps или 2@25fps+4x4fps или 1@25fps+6x4fps или 8х4fps;
          • HW-216Q9 (она же может продаваться как Orient HW-G800X) - 8x25fps или в режиме мультиплексирования: 7@25fps+2x4fps или 6@25fps+4x4fps или 5@25fps+6x4fps или 4@25fps+8x4fps или 3@25fps+10x4fps или 2@25fps+12x4fps или 1@25fps+14x4fps или 16х4fps;
        • на декодере bt878: HW-808 - 8x25fps;
    • возможно совместимые: 1 и 2 ;
    • как проверить: «Платы видеозахвата в Linux.».
  • USB-камеры (поддерживаемые video4linux2 драйверами).
Рекомендуемые максимальные разрешения для PCI устройств аналогового видеозахвата:
  • 4 камеры - макс. возможное, например 720×576 для saa7134, 768×576 для bt8xx, 704х576 для techwell;
  • 5 камер - 640х480;
  • 6,7 камер - 560×420;
  • 8 камер - 480х360;

http://groups.google.com/group/avreg-users/msg/eaa19e1071fba289

Поддерживаемые устройства аудиоввода

  • IP-камеры с возможностью трансляции звуковых потоков по rtsp. Некоторые модели камер с возможностью трансляции звуковых потоков по http.
  • ALSA -совместимые устройства:
    • звуковые карты,
    • платы видеозахвата с возможностью аудиоввода,
    • микрофоны USB-камер (linux alsa-совмеcтимых).

Конфигурационный файл.

Системные настройки демона avregd вынесены в файл «/etc/avreg/avreg.conf».

...

# Имя хоста SQL-сервера и имя базы данных.
# По умолчанию:
; db-host = "пусто=локальная база"
; db-name = avreg5_db

# Каталог, в который должны сохраняться аудио/видео файлы.
; storage-dir = "/var/spool/avreg"

 Системные пользователь/группа, с привилегиями которых ("под которыми")
# будут работать приложения серверной части AVReg - avregd и avreg-unlink.
# Такие же атрибуты "владелец:группа" получат все создаваемые каталоги и файлы.
# Прим. по группе: если при монтировании файловой системы использовалась опция
# grpid (man 8 mount), то группа созданного в ней каталога/файла будет
# установлена значением группы родительского каталога.
# По умолчанию: avreg/avreg
; user  = avreg
; group = www-data

avregd {
   ### настройки демона avregd версии 5.5 ###

   # Параметры доступа к базе данных "db-user" и "db-passwd" сохранены
   # в приватном файле, включённом ниже:
   include "/etc/avreg/avregd.secret"

   # Переключить выполнение процесса на процессор (ЦПУ) с номером "cpu".
   # Номера (идентификаторы) процессоров смотрите в файле /proc/cpuinfo"
   # в поле "processor".
   # По умолчанию не установлено: использовать текущий CPU не переключаясь.
   ; cpu = 3

   # avregd будет работать только с устройствами под номерами,
   # указанными в "devlist". Значение параметра "devlist" должно представлять
   # собой строку номеров устройств, разделённых запятыми.
   # По умолчанию не установлено, т.е. работать с всеми активными (`work'=`Вкл.')
   # устройствами.
   ; devlist = 1,3,5-10,25

   # Права доступа (man 1 chmod) на создаваемые в {storage-dir} каталоги и файлы.
   # Значения по умолчанию: 0775/0644 для "dirs-mode" и "files-mode" соответственно.
   ; dirs-mode  = 0770
   ; files-mode = 0640

   # Максимальное количество файлов в одном каталоге для одной камеры
   # (см. описатель "%L" в описании параметра "dirs-name-fmt" ниже).
   # Допустимые значания [50..1000], по умолчанию: 500.
   ; max-files-per-dir = 100

   # Форматы имён каталогов и медиа-файлов, создаваемых в каталоге {storage-dir}.
   # Обычные символы [A-Za-z_-./] копируются без преобразований.
   # Описатели преобразования предваряются символом "%":
   #   %V - номер камеры;
   #   %О - название камеры (параметр text_left);
   #   %W - последние две цифры текущей сессии движения или принудительной записи;
   #   %t - номер кадра в секунде (только для отдельных кадров JPEG);
   #   %a,%b,%d,%H,%m,%S,%w,%y,%Y - описатели преобразования даты/времени
   #        (создания файла) функции strftime(3) языка С (man 3 strftime);
   #   %f - расширение файла (jpg, avi, ...);
   #   %L - используется для перехода на новые подкаталоги "nextXXXX"
   #         при превышении кол-ва файлов в текущем каталоге значения
   #         определенного параметром "max-files-per-dir",
   #         !!! должно быть последним параметром.
   # Недопустимые символы заменяются на символ "_".
   # !!! Для предотвращения потери записанной информации (перезаписи файлов), помните:
   #      * именно использованием временных описателей в форматах вы обеспечиваете
   #        уникальность имени файла;
   #      * очень важно обеспечить "плавный" ход системного времени, рекомендуем
   #        использовать NTP с 128ms шагом коррекции и не менять время "вручную" вовсе.
   ; dirs-name-fmt = "%Y-%m/%d/%V-%O%L"
   ; jpeg-name-fmt = "%H_%M_%S-%t.%f"
   ; av-name-fmt   = "%H_%M_%S.%f"

   # Принимать http запросы на этих сетевых интерфейсах.
   # Допустимо указывать список IP-адресов или имен интерфейсов,
   # разделённых запятыми или пробелами, например: "lo, eth1, 192.168.0.3".
   # По умолчанию не установлено: принимать на всех активных интерфейсах.
   ; listen-addr = "lo, eth1"

   # Принимать http запросы на этом порту. По умолчанию: 874
   ; http-port = 81

   # Осуществлять исходящие сетевые соединения к сетевым камерам
   # с этого адреса. АДРЕС можно быть указан как IP-адрес или
   # как имя сетевого интерфейса.
   # По умолчанию не установлено: решение принимает сетевой стек 
   # операционной системы системы.
   ; bind-addr = eth1

   # Внешний скрипт (канал pipe) для сбора событий.
   # event-collector = "PATH[,W[,R]]", где
   #    PATH - абсолютный путь до скрипта,
   #  опциональные значения W и R являются таймаутами в секундах:
   #    W - ожидания завершение скрипта при завершении демона,
   #        значение 0 - не ждать, по-умолчанию: ждать 2 секунды;
   #    R - respawn таймаут для перезапуска,
   #        минимум - 3 секунды, по-умолчанию: 5 секунд.
   # См. также: http://avreg.net/manual_applications_avregd-event-collector.html
   # По умолчанию: не задан, т.е. не уведомлять о событиях.
   ; event-collector = "/etc/avreg/scripts/event-collector"
}

Профили.

Для более гибкого управления ресурсами и разделения AVReg для разных пользователей, помимо центрального конфигурационного файла avreg.conf демон avregd поддерживает профили - дополнительные конфигурационные файлы в каталоге /etc/avreg/profiles/. Понять для чего нужны профили проще всего ознакомившись с основными примерами их использования:

Конфигурационная база данных.

Все остальные настройки, например, настройки захвата/записи/трансляции для конкретных видеокамер, параметры доступа конкретных пользователей, находятся в конфигурационной базе данных «avreg5_db» и изменяются с помощью веб-интерфейса AVReg. Каждый параметр кратко задокументирован на соответствующих страницах веб-интерфейса AVReg.

Управление.

Управлять демоном avregd можно 2 способами:

  1. с терминала командой
    root# service avreg [имя_профиля] команда
    # или
    user$ sudo service avreg [имя_профиля] команда
    
  2. с веб-интерфейса ( :!: нужна настройка sudo ).

Допустимы следующие команды: start|stop|restart|reload|force-reload|status.

start, stop, status интуитивно понятны, reload или restart необходимо выполнять после каждого изменения параметров, так как только по этим командам, avregd перечитывает конфигурационную базу данных.

Имеет HTTP CGI API.

Контроль.

avregd не имеет визуального интерфейса (на то он и демон) и все свои сообщения (обычные, ошибки, предупреждения) выводит посредством Syslog. По умолчанию, запись ведётся в файл «/var/log/daemon.log» В реальном времени контролировать его удобно командой tail. Например:

root# tail -fn 50 /var/log/daemon.log
manual/tuning/avregd.txt · Последние изменения: 2011-01-28