LINUX.ORG.RU

Архитектура распределенного видеоприложения


0

1

Добрый день. Есть у меня задача, соорудить распределённое приложение... Скажем, видеонаблюдения. Есть оператор, есть видеокамера, есть сервер, оператор работает через веб-морду. Общий алгоритм таков: 1. Оператор открывает сайт, и выбирает нужную камеру. Камеры всегда в одной подсети с оператором, сервер в другой подсети. 2. Выбрав камеру, оператор начинает просмотр видеопотока с камеры, видеопоток идёт напрямую от камеры на ПК оператора, минуя сервер, чтобы не создавать излишней нагрузки. 3. В определённый момент оператор даёт команду на запись видео. Тогда приложение, работающее на стороне камеры, осуществляет запись небольшого кусочка видео, и отправляет его на сервер.

Как лучше организовать такую архитектуру? Пока я не придумал ничего лучше чем это: https://picasaweb.google.com/lh/photo/1s61NqzkznGEhOgFMuRqWQ?feat=directlink

https://picasaweb.google.com/lh/photo/hVxzfIOQcTnOG5thrfbn-g?feat=directlink

Есть ли идеи? может кому-то интересно, или кто-то уже реализовывал такое?

Ответ на: комментарий от devl547

:) Ну во-первых нужна не только запись, но и стриминг. запись будет запущена только тогда, когда этого захочет оператор.

:) Во-вторых там три компонента (см. ссылки), видео будет записываться на одном хосте, команда на запись приходить с другого хоста, а сохраняться результат на третьем хосте :)

dmitryalexeeff
() автор топика
Ответ на: комментарий от anonymous

erlyvideo не пробовал. У меня другой инструментарий, я пишу на C++.

dmitryalexeeff
() автор топика
Ответ на: комментарий от dmitryalexeeff

>нужна не только запись, но и стриминг

От камеры видеопоток идет на веб-морду оператора.
Если нужно - он жмякает кнопку и сервер коннектится к камере и начинает запись.

видео будет записываться на одном хосте, команда на запись приходить с другого хоста, а сохраняться результат на третьем хосте :)


Вебморда и samba/nfs/etc..

devl547 ★★★★★
()
Ответ на: комментарий от devl547

От камеры видеопоток идет на веб-морду оператора.

через libastral идет?

Если нужно - он жмякает кнопку и сервер коннектится к камере и начинает запись.

В 90% случаев никакого оператора нет, а запись надо включать/выключать. Включается она, естественно, по детектору.

Reset ★★★★★
()

ZoneMinder запустить не удалось. Appliance все с глюками, установить отдельно тоже не вышло. Потратил день, и бросил :)

С камерой собираюсь общаться через JavaScript -> XMLRPC.

Только вот возникла проблема с организацией трансляции видеопотока.

1. Есть протокол RTSP, и куча библиотек для реализации сервера на нём, но под него нет веб-плейеров.

2. Есть также протокол RTMP, под него существуют >9000 веб-плейеров, но нет библиотек для написания сервера, так как протокол проприентарный.

3. Вроде можно стримить видео напрямую через HTTP, но как это делать неизвестно, и говорят что такой подход даёт задежку в 15-20 секунд.

Где бы почитать про подобные вещи? Я категорически не понимаю, почему так мало информации, ведь live-streaming сейчас повсюду...

dmitryalexeeff
() автор топика

Получить без гемороев поток от камеры к пользователю не получится, а всем остальным успешно занимается erlyvideo.

max_lapshin ★★★★★
()
15 августа 2011 г.
Ответ на: комментарий от max_lapshin

Да, к сожалению это так... Пока-что сделал заглушку в виде MJPEG-стриминга. Потом думаю реализовать стриминг в формате webm. Очень многообещающий подход:

1. Стриминг через endless-webm поддерживается новыми браузерами из-коробки, в теге HTML5 video

2. На практике endless-webm это MKV-файл с небольшими особенностями структуры, в котором размещены куски данных

3. Куски данных - это видео, пожатое кодеком VP8, дающим замечательные результаты на стриминге

Единственная проблема здесь в том, что существующие библиотеки для VP8, MKV (libmatroska и libebml) не имеют нормальных доков, а идущие в поставке примеры порой даже не компилятся :)

dmitryalexeeff
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.