?

Log in

No account? Create an account
 

Веб камеры и экономия трафика - 3з - заметки, записки, загрузки

О журнале Веб камеры и экономия трафика

Previous Entry Веб камеры и экономия трафика 7 фев, 2008 @ 19:44 Next Entry
Задача - организовать вещание вебкамеры с горнолыжной трассы. При этом трафик от камеры до большого интернета стоит очень дорого, а потому его нужно экономить.

Самое простое решение

Ставим на сайте ссылку, указывающую IP камеры, где пользователь подключается к просмотру. Камера может выдавать видео в формате MJPG и MPEG-4. Однако настоящий мультикастинг возможен только на MPEG-4, и при этом требуется установка кодеков и проигрывателя у посетителя. А более универсальный MJPG сильно напрягает канал связи - для каждого посетителя запускается новый поток данных. И тоже, кстати, требует кодеков.

Апгрейд №1 - JavaScript-слайдшоу

Заменяем видео на скрипт, обновляющий JPG картинку в окошке браузера раз в 10 секунд. Получается слайдшоу, которое можно смотреть без дополнительных кодеков и плагинов. Уже хорошо. Но картинки грузятся непосредственно с камеры.

Апгрейд №2 - веб сервер в качестве кэша

Настраиваем на вебкамере отправку изображений через FTP на веб сервер (например, раз в десять секунд). Так чтобы изображение с камеры отправлялось каждые 10 секунд. А на сайте пишем скрипт, который регулярно обновляет картинку в окошке просмотра. В случае выключения камеры на сайте остаётся доступной последний кадр. И нагрузка на камеру снижается. Однако изображение транслируется круглосуточно, а делать вещание по расписанию путь явно тупиковый. Интернет, это не то место, где можно писать "Заходите позже".

Апгрейд №3 - включаем камеру при посещении

Настраиваем на камере кнопку удлённого включения вещания. Изменяем скрипт загрузки на FTP таким образом, чтобы он запускался по событию "manual trigger". Добавляем в страницу просмотра изображения с камеры код на PHP, который "нажимает на кнопку" при загрузке страницы. Скрипт загрузки работает, например, 3 минуты после включения кнопки и останавливается. Плюсы - камера не отправляет изображение на сервер, когда нет посетителей. Минусы - после каждого включения камера отрабатывает 3 минуты. Кто-то уйдёт с сайта раньше, и загрузка будет продолжаться впустую. А кто-то захочет посмотреть дольше, а трансляция остановится.



Последний апгрейд - кнопка "продолжить трансляцию"

Добавляем в окно просмотра кнопку, при нажатии на которую на камеру отправляется команда продолжить трансляцию. Теперь можно уменьшить время загрузки на FTP до 1 минуты, а скорость смены кадров увеличить до кадра в 3 секунды. Итого, после каждого включения камеры идёт отгрузка 20 кадров примерно по 30 килобайт - 600 килобайт.

P.S. По сути слово "апгрейд" надо заменить на "даунгрейд" :)
Тэги: , ,
Оставить комментарий
[User Picture Icon]
From:huan_carlos
Date:Февраль, 7, 2008 16:56 (UTC)
(Link)
Осталось только написать фильтр, который бы на сервер выкладывал не полный кадр, а изменения относительно предыдущего, ну а серв вычислял бы полный кадр ;)))
[User Picture Icon]
From:kibizoid
Date:Февраль, 7, 2008 16:59 (UTC)
(Link)
Эмуляция B-кадров в программу полёта не входит :). Потому как камеру перепрограмировать - это не для меня.
[User Picture Icon]
From:huan_carlos
Date:Февраль, 8, 2008 18:08 (UTC)
(Link)
Мультикастом можно слать чего угодно, проблема не в кодеке, а в том, что мультикаст возможен в ограниченном сегменте сети. Любой шлюз в интернете зарежет его нафиг. Чтобы технология работала, шлюзы в цепочке мультикастовый сервер-клиент должны поддерживать "подписку" на запрашиваемый мультикастовый траффик. Таким образом построено IP-TV вещание у Корбины, например. Просто иначе, если все каналы сразу пихать мультикастом в сеть, то последняя миля должна быть как минимум честно гигабитная, что довольно дороговато ;)
[User Picture Icon]
From:brakhma
Date:Февраль, 7, 2008 22:40 (UTC)
(Link)
Смысл этой трансляции не понятен. Зачем ставить камеру и тратить дорогущий траффик чтобы показать человеку слайдшоу из 6-ти картинок. Такое ощущение, что это не нужно ни пользователю ни хозяевам ресурса.
[User Picture Icon]
From:huan_carlos
Date:Февраль, 8, 2008 09:01 (UTC)
(Link)
Да вот мне тоже кажется - было бы куда проще нащелкать сотни три кадров и показывать их рендомно с учетом времени суток ;))
[User Picture Icon]
From:brakhma
Date:Февраль, 8, 2008 17:53 (UTC)
(Link)
Такие мысли тоже были, но это же вообще не красиво.
[User Picture Icon]
From:kibizoid
Date:Февраль, 9, 2008 14:55 (UTC)
(Link)
Нашёлкать кадров сгоры нужно, но не вебкамерой. Есть две задачи - задача №1 - показать, что парк работает именно сейчас (для этого слайдшоу не важно с каким качеством) и как в парке здорово и красиво (для этого фото, сделанные профессиональным фотографом).

А делать фейк вместо реальной трансляции - это не здорово. Это обязательно всплывёт.
[User Picture Icon]
From:kibizoid
Date:Февраль, 9, 2008 14:50 (UTC)
(Link)
Слайдшоу получилось всё-таки из двадцати картинок в минуту, будем точны. Обновление раз в три секунды.

Хозяевам ресурса это нужно. По другому штуковина не делалась бы.

Насколько я понимаю, трансляция - это статусная штука. Должна быть картинка с горы. Не обязательно HDTV - его цель в другом. Это как "на Марсе жизнь есть" - трасса работает, днём там тренируются, вечером работает освещение, ночью - работают ратраки, разравнивающие трассу.
[User Picture Icon]
From:brakhma
Date:Февраль, 9, 2008 15:08 (UTC)
(Link)
Аааа. Понятно.

С технологической точки зрения это небезупречно, но всёже довольно круто.
[User Picture Icon]
From:lifewatch_ru
Date:Июнь, 22, 2010 11:10 (UTC)
(Link)
Пошел тоже по пути слайдшоу на JS (только изображения сервак wgetит с камеры)...как вы побороли проблему что картинка иногда не всегда полностью загружается (по крайней мере у меня так) (вот - http://img-fotki.yandex.ru/get/4300/lifewatch.3/0_5fffc_bf9e54e5_XL.jpg)

p.s. Моя камера - http://lifewatch.ru/webcam/
[User Picture Icon]
From:kibizoid
Date:Июнь, 22, 2010 11:55 (UTC)
(Link)
Для того, чтобы этого не происходило загрузка изображения на сервак у меня происходит в два этапа - сперва картинка загружается в файл с временным именем (медленная часть операции), а потом старая картинка заменяется на уже загруженную (удаление старого файла и переименование нового - быстрый процесс).
[User Picture Icon]
From:lifewatch_ru
Date:Июнь, 22, 2010 12:12 (UTC)
(Link)
о...точно! пасибо!
(Оставить комментарий)
Top of Page Разработано LiveJournal.com