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

webcam-emu - эмулятор MJPG ip-камер.

webcam-emu

Необязательный пакет, предназначен для тестирования системы видеонаблюдения без реальных ip-видеокамер.

webcam-emu это эмулятор сетевых mjpg (Motion JPEG over HTTP) видеокамер, например, Axis, Planet, D-Link, и другие, см. список mjpeg ip-камер.

webcam-emu “отдаёт” jpeg-и из некоторого каталога по протоколу http двумя способами:

  1. потоковый Motion JPEG (Content-Type: multipart/x-mixed-replace);
  2. снапшотами или одиночными кадрами (Content-Type: image/jpeg).

Лицензия GPLv2, исходные коды тут http://avreg.net/debian/pool/main/w/webcam-emu/

Установка.

Debian/Ubuntu

Сначала вы должны подключить debian-репозиторий AVReg.

Далее, выполните следующие 2 команды.

Выполнять от root-а или через sudo

# aptitude update
# aptitude install webcam-emu

Прим.: вместо команды aptitude вы можете пользоваться apt-get, Synaptic или любым другим фронтендом пакетного менеджера APT.

Другие дистрибутивы.

Если вы хотите использовать webcam-emu на других Linux-дистрибутивах или операционных системах, вы можете самостоятельно портировать и доработать Makefile и, возможно, исходные коды пакета webcam-emu (GPLv2) с учётом правил и политик сборки ваших систем.

Исходный код самой программы представляет собой скрипт на языке Ruby, который портирован и включен в большинство дистрибутивов Linux и Unix.

Управление.

Сразу после установки пакета устанавливается автоматический способ запуска (sysv init) в момент запуска/загрузки компьютера.

Интерактивный способ запуска, в любом терминале, CTRL-C - выход.

$ webcam-emu
[2009-05-19 14:16:47] INFO  WEBrick 1.3.1
[2009-05-19 14:16:47] INFO  ruby 1.8.5 (2006-08-25) [i486-linux]
[2009-05-19 14:16:47] INFO  WEBrick::HTTPServer#start: pid=5635 port=60001
localhost - - [19/May/2009:14:18:39 MSD] "GET /mjpg/video.mjpg?fps=3 HTTP/1.1" 200 0
- -> /mjpg/video.mjpg?fps=3
<CTRL-C>
[2009-05-19 14:16:51] INFO  going to shutdown ...
[2009-05-19 14:16:51] INFO  WEBrick::HTTPServer#start done.

Запуск демоном, остановка, перезапуск.

# /etc/init.d/webcam-emu  {start|stop|restart}
или
# invoke-rc.d webcam-emu {start|stop|restart}

Настройка.

Все настройки webcam-emu находятся в конфигурационном файл «webcam-emu.yaml» текстового формата YAML, который основной скрипт webcam-emu будет последовательно “искать” в следующих каталогах:

  1. «/etc/webcam-emu/»,
  2. «/etc/»,
  3. «$HOME/»
  4. и текущем «./».

По-умолчанию, устанавливается файл «/etc/webcam-emu.yaml»

/etc/webcam-emu.yaml

### Параметры http сервера Webrick ###
:BindAddress:       '0.0.0.0'  # принимать запросы на этом адресе/интерфейсе
                               # "0.0.0.0" - на любых адресах/интерфейсах
:Port:              60001      # номер порта tcp
:MaxClients:        64         # макс. кол-во одновременных соединений
:RequestTimeout:    5          # время ожидания запроса после соединения
:ServerSoftware:    'webcam-emu/0.5'
    
### Параметры эмулятора ###
Debug:  false
JpegsRoot: '/var/lib/webcam-emu'
# Структура каталогов с jpeg-файлами:
# {JpegsRoot}/
#             640x480/
#                       color/
#                               01.jpg, 02.jpg, ...
#                       grey/
#                               01.jpg, 02.jpg, ...
#

# CGI параметр "resolution"
DefResolution:  '640x480' # значение по-умолчанию для "resolution"
# CGI параметр "color"
DefColor:       1         # значение по-умолчанию для "color",
                          # 1(цвет.) или 0 (ч/б.)

# url-path алиасы для режима снапшот или одиночный кадр
JpegHandler:
    :aliases:
        - '/axis-cgi/jpg/image.cgi' # любые Axis ip-камеры и видеосерверы 
        - '/jpg/image.jpg'          # большинство ip-камер Planet
        - '/image.jpg'              # некоторые D-Link ip-камеры

# url-path алиасы и другие параметры 
# режима потокового mjpg-видео по протоколу http (Motion JPEG)
MjpgHandler:
    :boundary:      'myboundary' # строка-разделитель boundary
    :default_fps:   5  # кадров в секунду, CGI параметр "fps"
    :default_mode:  0  # CGI параметр "mode", допустимые значения:
                       #  0 - последовательно передавать все jpeg-файлы
                       #  1 - передавать jpeg-файлы с шагом равным
                       #      значению параметра "fps", т.е. эмулировать
                       #      пропуск кадров или ограничение fps на
                       #      "живом" 25(PAL)/30(NTSC) fps источнике видео
                       #  2 - начинать передачу с первого jpeg-файла
                       #      в начале каждой секунды

   :aliases:
        - '/axis-cgi/mjpg/video.cgi' # любые Axis ip-камеры и видеосерверы
        - '/mjpg/video.mjpg'         # большинство ip-камер Planet
        - '/mjpeg.cgi'               # некоторые D-Link ip-камеры

#  Смотрите также другие известные нам пути URL в других ip-камерах:
#      http://www.linuxdvr.ru/rus/docs/apps-ipcam-capture.html

Значения параметров «resolution», «color», «fps», и «mode» можно устанавливать CGI-параметрами (т.е. в самом URL-e для запроса GET), например:

http://localhost:60001/mjpeg.cgi?resolution=720x576&color=0&fps=12&mode=2
Из какого каталога webcam-emu будет читать и отправлять jpeg-файлы, определяется значениями параметров «resolution» и «color» (см. описание структуры каталогов в комментариях конф. файла выше).

Проверка.

Примеры URL.

http://localhost:{Port}/axis-cgi/mjpg/video.cgi
http://localhost:{Port}/mjpg/video.mjpg?resolution=640x480&color=1&fps=3
http://localhost:{Port}/mjpg/video.mjpg?fps=7&mode=2

Браузером.

“Нативно”, т.е. без плагинов, апплетов, ActiveX-ов и т.п. приблуд :-D , с потоком Motion JPEG может работать только Mozilla Firefox (из известных браузеров, естественно). Для Mozilla Filerox есть 2 способа отображения motion jpeg видео:

  1. Открыть URL непосредственно: firefox '{URL}' (ну, или набрав в адресной строке). Простой, но не очень стабильный способ.
  2. Создать тестовую страницу с элементом <IMG src="URL">, например:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
  <title>Mozilla Firefox html page for webcam-emu testing.</title>
</head>
<body>
   <img src="http://localhost:60001/mjpg/video.mjpg?fps=3"
      alt="see mjpg video here">
</body>
</html>
Если видео всё же не отображается, в числе прочего, проверьте, не установлено ли у вас расширение ImgLikeOpera (ILO), блокирующее загрузку картинок?
Дополнительно, попробуйте обновить страницу (reload, <F5>) или выбрать пункт «Загрузить изображение» в контекстном меню, выпадающем по нажатию правой кнопки мыши над элементом <IMG>.

Медиа-плеером.

vlc 'http://localhost:60001/mjpg/video.mjpg'
ffplay 'http://localhost:60001/mjpg/video.mjpg'

AVReg

Первым шагом вам нужно установить программу видеорегистрации AVReg. Полное руководство пользователя с пошаговой инструкцией по установке читайте здесь «Руководство пользователя.»

Для установки серверной части (без локального просмотрщика камер avreg-mon, т.е. в реальном времени просмотр только веб-браузером) достаточно установить метапакет «avreg-server».

выполните от root-а или через sudo

aptitude install avreg-server

Далее, заходите веб-браузером по адресу:

http://localhost/avreg/

или, если вы работаете с другого компьютера по сети

http://на-каком-там-сервере-у-вас-стоит-AVReg/avreg/

вводите логин «admin» или «install» с пустым паролем и переходите на страницу настройки камер по ссылкам «Настройки и управление” и далее «Настройки» → «Видеокамеры».

Для каждой “AVReg-овой” камеры (т.е. ранее созданных в “админском” веб-интерфейсе), которая планируется для использования с эмулятором, в веб-интерфейсе нужно определить нижеследующие параметры.

Если таких «эмулируемых» камер много или вообще все, то вы можете определить значения параметров всего лишь для одной специальной виртуальной AVReg-овой камеры с именем «параметры для всех».

Скриншот::веб-интерфейс::настройка камер

Раздел «Главное»:

work = "Вкл."

Раздел «Камера»:

cam_type = "netcam"
geometry = 640x480, т.к. цветные jpeg-и 640x480 включены в пакет webcam-emu
color = 1

«Камера» ⇒ «ip-камеры»:

InetCam_IP = ip-адрес хоста, на котором работает эмулятор webcam-emu

«Камера» ⇒ «ip-камеры» ⇒ «протокол http»:

InetCam_http_port = tcp-порт, который слушает webcam-emu, 
       если не меняли, то 60001.
V.http_get = строка запроса GET, например, /mjpg/video.mjpg?fps=5

:!: Если вы не можете найти параметр InetCam_http_port в этом разделе, установите «показывать все параметры» (а не «только основные»).

показывать все параметры

Удостоверьтесь что в конфигурационном файле «/etc/avreg/avreg.conf» установлен параметр «allow-duplicated-url».

/etc/avreg/avreg.conf, секция avregd {...}

# Позволять захватывать медиа-потоки с нескольких видеокамер
# с одинаковыми ip-адресом и номером порта, например, при
# использовании эмулятора mjpg веб-камер webcam-emu. 
# Закомментируйте или установите в "no" при использовании 
# c реальными ip-камерами.
allow-duplicated-url = yes

Далее, настраивайте любые другие AVReg-параметры «по вкусу» и изучайте возможности и проверяйте работу программы видеорегистрации AVReg в деле, а не со слов маркетологов и прочих “продвигологов” ;-) .

локальный вьювер avreg-mon 640x480, мультиэкран 13 камер (webcam-emu)

Mozilla Firefox, мультиэкран 8 камер (webcam-emu)


Всё, до развёртывания настоящей системы видеонаблюдения остался всего лишь один шаг - покупка реальных видеокамер.

ZoneMinder

Сюда планируется разместить ссылки на ваши цельные статьи (не просто заметки в форуме и т.п.) по настройке и тестированию ZoneMinder с использованием нашего webcam-emu (GPLv2). Напишите нам если вы напишите и разместите в сети такую статью.
manual/tuning/webcam-emu.txt · Последние изменения: 2011-01-26