vk_logo twitter_logo facebook_logo googleplus_logo youtube_logo telegram_logo telegram_logo

Сочи.Камера - сайт видеотрансляций с полумиллионом посетителей 12

Дата публикации: 02.04.2018
Количество просмотров: 3452
Автор:

Сочи.Камера - сайт с трансляцией стримов с более 300 веб-камер, установленных в Сочи и окрестностях. Сайт и весь сервис некоммерческий, создан и поддерживается на собственные средства местным интернет-провайдером "Бизнес-Связь" уже почти 10 лет. Подобных проектов по качеству, количеству и разнообразию видеоинформации на территории РФ больше нет.

Создавая проект, мы перепробовали много моделей внешних видеокамер (фиксированных, поворотных, мобильных), дорабатывая и приспосабливая их под наши нужды. Перепробовали несколько серверных решений, доводя их до ума вместе с разработчиками. Сами написали мобильные приложения для Андроида и iOS. Проект получился очень непростым, но мы постепенно отработали каждый элемент системы до состояния высокой эффективности. Развитие продолжается, однако уже сейчас есть что рассказать.

Это первая, обзорная статья. В ней мы расскажем о том, как запускали и развивали этот проект, из чего состоит техническое решение, как установить веб-камеру в клетке у льва, и зачем люди со всей России смотрят на Сочи через наш сайт. Если эта статья покажется интересной, мы можем рассказать о проекте более детально.

С технической стороны проект Сочи.Камера разбивается на три части:

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


И всё это в "прямом эфире".

Пойдём последовательно.

1. Камеры

Камеры на сети стоят разные. За почти 10 лет перепробовали многие модели, часть из тестированных так и стоят на сети. Камеры унифицированные, стандартные, протокол, который мы используем (RTSP), поддерживается практически каждой типовой моделью. Стоимость камер сильно упала с 2008 года, а качество изображения сильно выросло. Тогда простая статичная камера обходилась в сумму порядка 40 тысяч рублей, сегодня за те же деньги можно купить поворотную Full HD с возможностью "патрулирования по точкам", поставить её на вышке, и она будет давать динамичное изображение. Обычная же статичная камера сегодня стоит всего 6-7 тысяч.

Качество изображения с современных камер – практически телевизионное, совсем не то изображение в веб-камере, к которому мы все привыкли – маленький тёмный квадрат с частотой 1 кадр в секунду.

В последнее время остановились на паре моделей отечественного производителя: DSSL (ActiveCam) и SNR. Они малошумные, с хорошим эффектом ночной съемки, за счет современной матрицы.

Каждая камера отдаёт два потока: Full HD (скорость 4-6 Мбит/сек) и SD (512 Кбит/сек), на сайте есть переключатели HD/SD. Это делается для того, чтобы пользователи с медленным  интернетом могли включить щадящий SD-режим. Он же используется у нас в мобильных приложениях, потому что на маленьком экране разница между Full HD и SD практически незаметна. Что касается программного обеспечения, то в самих камерах стандартная заводская прошивка, как правило, мы ничего не меняем.

Сейчас в общем доступе порядка 318 камер. Запись ведётся на ~ 115-120 камер, которые относятся к дорожной обстановке. Запись нужна из-за необходимости разбора ДТП, что довольно часто происходит. Мы не записываем камеры, которые смотрят на природу, на закаты, на горы и так далее, серверы записи - дорогой ресурс, зря его мы стараемся не расходовать.

Насчет приватности... камеры установлены так, чтобы лица не читались. Мы ставим панорамные камеры, чтобы было видно общую сцену, например, желтенькая машинка бьет синенькую, светофор горит там такой-то, не более того. Тем не менее, ГИБДД и полиция обращаются часто, каждую неделю и даже бывает каждый день: просят показать записи.

Монтаж и обслуживание камер делаем через подрядчиков. При этом если проблемы и бывают, то от слишком точного следования инструкциям. Приходится делать больше, чем по инструкции, учитывать, например, перепады давления и температуры, В процессе работы появились свои хитрости, например, соединение Ethernet-кабеля внутри корпуса камеры, а не в монтажной коробке или штатном соединительном "бочонке". Изолировать вебкамеры приходится гораздо серьёзней по сравнению со штатными средствами, чтобы они несколько лет спокойно работали без попадания влаги внутрь.


Монтаж камер проходил в совершенно разных, а порой экстремальных условиях

За размещение камер ничего не платим, это момент принципиальный, так как наш проект некоммерческий - изображение идёт в открытый доступ, мы ничего с него не зарабатываем. Так что, если кто не хочет бесплатно размещать, там не размещаем. В городе много красивых мест и много желающих поставить эти камеры. Владельцы зданий довольно охотно дают разрешение на установку, просто потому что мы на камере даем рекламу этих заведений бесплатно. Посещаемость у нас достаточно высокая для регионального сайта, свыше 500 000 человек ежемесячно, мы конкурируем с большими новостными местными порталами. Так что проблема, скорее, подать канал к интересному месту, чем собственно поставить камеру.

В целом, после того, как мы нашли оптимальные решения для разных ситуаций установки, камеры – это где-то 10% того, из чего состоит проект Сочи.Камера. Главное не в них, а скорее в каналах передачи видео и программном обеспечении для трансляции на сайте.

2. Каналы передачи видео

"Бизнес-Связь" – интернет-провайдер, оператор связи, у нас своя сеть по городу, большое количество узлов. Так что, нам не надо арендовать никаких каналов для передачи видео, ни "последнюю милю", ни магистральные каналы, ни доступ в интернет - у нас всё уже есть.

Потребители наших услуг – это организации и физические лица. Если смотреть на профиль их интернет-трафика, то там, в основном, трафик входящий, так как стандартный пользователь, как правило, трафик потребляет (скачивает). В среднем, соотношение входящего к абоненту трафика к исходящему – это 10 к 1. Каналы, которые мы арендуем/покупаем для предоставления услуг интернет у магистральных операторов, синхронные, в них скорость входящая и исходящая одинаковые. Так что обратный (исходящий канал), как правило, у интернет-провайдеров полупустой. Эта ситуация характерна для большинства операторов, работающих с людьми. В дата-центрах хостинг-провайдеров и соцсетей ситуация противоположная, там в основном исходящий трафик, но это не наш случай.

В итоге получается, что сбор видео с камер и его трансляция в интернет, с точки зрения затрат на передачу трафика, нам почти ничего не стоит. При этом каналы нужны серьёзные, ведь статичная камера даёт примерно 4 Мбит/сек, а поворотная - до 10 Мбит/сек в момент смены ракурса.

Умножьте это на количество одновременных потребителей, а это 2000 и более в дневное время. Предположим, что сторонняя организация, не оператор связи, захочет создать проект наподобие Сочи.Камера. В этом случае весь необходимый ресурс нужно будет арендовать у связистов, а по нынешним ценам это влетит в хорошую копеечку. А вот если вы оператор связи – то и флаг вам в руки.

Но сложности с организацией каналов связи всё-таки иногда есть. Это связано с тем, что там, где каналы связи присутствуют, то есть в центре города в основном, смотреть уже почти нечего. А там, где интересно, каналов связи близко нет, и их приходится как-то организовывать, выделять технику, расходные материалы, людские ресурсы. Например, сейчас организовываем связь к норе енота в лесу.

3. Программное обеспечение для видеотрансляции

Мы начинали наш проект в 2008-2009 годах, когда не было каких-либо образцов, которые можно было просто взять и скопировать. Тогда было много агрегаторов веб-камер, которые искали их везде, где только можно, и представляли в одном каталоге как, якобы, свои. Но комплексных, готовых решений не было. Для приёма такого большого количества камер и раздачи многим людям на разные устройства, нужен надёжный и стабильный софт. Так что мы начали всё делать сами, и это заняло несколько лет разработки с нуля, начиная от дизайна и заканчивая программной архитектурой. Ни у кого не копировали, перепробовали пять версий движка: от примитивного LinuxDVR на mjpeg до Red 5, ffmpeg+nginx, Wowza. От последней, кстати, отказались не по техническим причинам, а из-за изменений лицензионных условий при переходе на новую версию и отсутствия lifetime-лицензии в новой политике американского разработчика. То есть, они захотели получать деньги ежемесячно, исходя из фактической нагрузки. А то, что проект некоммерческий – никого там не волновало.


​Камеры наблюдения монтировали в клетке с леопардом

В процессе разработки и развития сервиса мы вышли на компанию Эрливидео, разрабатывающую медиасервер Flussonic. Команда проекта из Москвы (и с ней легко было найти общий язык), в целом хорошо себя зарекомендовала при решении нетривиальных задач. Нельзя сказать, что всё всегда было гладко, вылезали и косяки, и грабли. НО. Когда видишь у разработчика желание улучшать свой продукт, выслушивать и учитывать замечания заказчика, и видишь реальные результаты такого взаимодействия после очередного обновления – это дорогого стоит.

Flussonic Media Server - это видеостриминговая серверная платформа. С её помощью можно организовать захват любых видеопотоков, запись видео в архив и раздачу клиентам по различным протоколам и на любые устройства, как в режиме реального времени, так и по запросу. Проигрывание доступно в виде бесконечной ленты, которую можно просмотреть с любого момента. Раздача может идти по протоколам RTMP, RTSP, HLS, HDS, HTTP MPEG-TS, DASH и WebRTC. Также Flussonic умеет транскодировать видео, изменяя кодек и параметры видео. В списке поддерживаемых кодеков - Н.264, Н.265, MPEG-2, AAC, AC3, MP3, VP6, Speex и G711a/u. Платформа умеет собирать кластеры из серверов, захватывать более 1600 потоков и распределять сотни тысяч одновременных подключений. Для управления и мониторинга активности и нагрузки можно использовать как встроенные инструменты и веб-интерфейс, так и HTTP API.

С камер мы собираем потоки в стандартном RTSP. Раздавали до недавнего времени в основном DASH для флеш-плееров, UDP Multicast для внутренней сети и HLS для мобильных приложений. Последние несколько лет периодически анонсировались HTML5-революции и "похороны" Adobe Flash, поэтому мы вынуждены были использовать целую конструкцию, "скармливающую" нужный тип плеера и стрима в зависимости от браузера и ОС клиента. Несмотря на шумиху вокруг HTML5, многие популярные браузеры очень коряво отрабатывали тег <video>, когда дело касалось лайв-трансляций. В отличие, скажем, от проигрывания предзаписанного видео, которое достаточно стабильно работало с момента анонсирования HTML5.

Сейчас можно констатировать, что "браузерная турбулентность" закончилась и мы перешли на нативное html5-вещание в браузерах, полностью отказавшись от Flash-плагина. Таким образом, на "раздаче" у нас теперь только HLS и Multicast.

Для своих абонентов, пользующихся IPTV, мы сделали трансляцию этих камер в телевизионную сеть, то есть они видят все вебкамеры как отдельные телеканалы на своих телевизорах. Вебкамеры в IPTV сортированы тематически, и дополняют стандартный набор телеканалов, предлагаемых нами клиентам.

Другая наша фишка – это функционал встраиваемого плеера, как в YouTube или Vimeo. Со своего сервиса мы отдаем видео на некоторые очень известные сайты – это и краснополянские курорты, и отели. При этом они не поднимают стриминг на своей стороне, им достаточно просто кода вставки. Встраиваемый плеер может быть как брендирован, так и так и не иметь каких-либо опознавательных знаков, что позволяет нашим партнёрам самостоятельно оформлять свои страницы в нужном стиле. Примеры:


Ещё одна наша фишка – мобильные вебкамеры на базе сотовых телефонов. Мы их назвали "Пушок", от метода передачи потоков video push. Это кастомное Андроид-приложение, распространяемое в виде APK-файла. В Маркете его нет и не будет. Идея проста: в мобильном телефоне есть всё, что нужно для видеотрансляции (камера, GPS-позиционирование, канал передачи данных). Мы сделали приложение, которое обрабатывает видео и передаёт его сразу на Сочикамеру. Опционально передаются звук и координаты. Предусмотрено создание "чёрных дыр", оказавшись в которых "Пушок" приостанавливает трансляцию. Аналоги "Пушка" хорошо известны, например, это "Перископ" для "Инстаграма". Одно время мы думали распространять это приложение среди блогеров, но отказались от этой идеи по ряду причин. Сейчас "пушки" работают в нескольких городских автобусах, ближе к сезону возобновят свою работу трансляции с экскурсионных кораблей.


Отличные виды с сочинских веб-камер

Сочикамера сделана полностью на Яваскрипте. Бекенд – на Node.js, фронтенд – Angular.js

Мобильные приложения для Android, iOS и Windows Phone написаны с использованием стандартных инструментов разработчика. Также стоит добавить, что существует приложение для Windows Desktop, некоторые клиенты предпочитают его браузеру, поскольку работает быстрее, нет рекламы и в целом минималистичный функционал без "обвеса" в виде чатов и прочего.

Интересно, что за прошедшее время готовых комплексных решений "под ключ" так и не появилось. Существующие готовые видеосистемы предназначены для совсем других целей, в основном для охранного видеонаблюдения. Там есть видеостена, запись, просмотр, перемотка и так далее, но они заточены для охранного видеонаблюдения, а не для работы нескольких тысяч людей одновременно. Это вообще другой подход, другая архитектура.

На этом хотелось бы закончить обзорную статью. Как мы уже говорили выше, можно описать более детально многие элементы системы, они того стоят. Например, о хитростях установки видеокамер на улице в условиях высокой влажности и большого перепада температур, способ организации мобильных камер на автобусах и теплоходе, или более подробно о приложениях для смартфонов и их серверной части, или о выборе софта для видео стриминга на сайте. Можете сами задать вопросы, какая часть проекта вам интересна.

Источник блог Сочи.Камера

От редакции: если у вас есть чем поделиться с коллегами по отрасли, приглашаем к сотрудничеству
Ссылка на материал, для размещения на сторонних ресурсах
/articles/article/100971/sochi-kamera-sayt-videotranslyatsiy-s-polumillionom-posetiteley.html

Обсудить на форуме

Оставлять комментарии могут только зарегистрированные пользователи

Зарегистрироваться