?

Log in

No account? Create an account
Previous Entry Share Next Entry
Новости проекта "Сочикамера"
bisv
Давненько я ничего не писал про нашу Сочикамеру. А между тем, за прошедшее с крайнего поста время сделано было очень многое. Попытаюсь кратко рассказать о нововведениях, стараясь ничего не забыть и одновременно не утомлять дорогого читателя.

Прежде всего, мы продолжали ставить новые и менять/восстанавливать старые камеры. На сегодняшний день работают 92 камеры, из которых 85 камер - непосредственно Бизнес-Связевские, а остальные - партнёрские. Партнёрская - это когда камеру покупает кто-то (или камера уже по факту есть), а мы обеспечиваем интернет- трансляцию и совместно с партнёром эксплуатируем.

Приведу список новых/восстановленных камер, своего рода отчёт о проделанной работе за год, для порядка:

Включены новые камеры:
s17p, s18ptz, s19ptz, s27, s28, s29, s35, s37ptz, s39, s40, s41, s42ptz, s43ptz, r8, r9, r13, r28, r29, r33, r34 r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46 и r47

Произведена замена камер на новые, иногда со сменой места установки:
s3, s9, s16, s30, s31, s32, s33, s36, r10, r11, r19, r20, r21, r22, r25, и r26.

Под катом много интересного.





Камеры меняем на современные full-HD, с размером кадра 1920х1080 пикселей и частотой кадров 25-30 кадров в секунду. Безусловно, на таких режимах к интернет-каналу предъявляются более высокие требования и реальная скорость до наших серверов для просмотра статичной камеры нужна не менее 4 мегабит в секунду, а для поворотной - так и вовсе до 12ти. Там идут всплески трафика в момент поворота камеры вследствие специфики работы кодека h.264.

Сейчас среднесуточный график генерируемого сервисом трафика выглядит примерно так:
Daily payload
Это в обычный день, если ничего не случилось. Вещающие сервера соединены с внешним миром связкой из 4х потоков по 1 гигабиту в секунду каждый, так что платформа обладает существенным канальным резервом на случай проведения крупных мероприятий в будущем (весенняя олимпиада, формула 21, концерт Стинга).

Очевидно полезная работа по улучшению качества изображения упёрлась в фактическую неготовность многих сетей стабильно пропускать такие потоки, в результате чего изображение рвётся. Причин этому я вижу две.

Во-первых, если говорить о ближайших соседских сетях, то в Сочи крайне слабо развит межсетевой обмен данными (пиринг), в результате чего реальный обмен трафиком между нашей сетью и сочинскими абонентами Билайна, Йоты, Мегафона и ряда других - идет в лучшем случае через Ростов, а то и через Москву. Удивительно, как долго и сложно крупные компании решают простые вопросы, не связанные с прямым получением прибыли. В результате один и тот же файл быстрее пройдёт из Москвы в Сочи, чем из Сочи в Сочи. Проверьте скорость подключения до нашей сети, она должна быть не меньше 4мб/с (download) для стабильного просмотра. Оптимально - 10-12 мб/с. Рычаг для проверки здесь. Наши абоненты получают доступ к ресурсу на скорости 100мб/с независимо от тарифа, поскольку это внутренний трафик.

Вторая причина: достаточно тоскливо проходит ресурсоёмкое онлайн-вещание за пределы РФ. Здесь источник проблемы в другом - экономия на каналах плюс приоритетная маршрутизация для мегаполисов. Вещание идёт из Сочи, а мы всё-таки не мегаполис.


Мультибитрейт, мобильное приложение



Решением обозначенной проблемы без ущерба для любителей высокого качества может стать мультипоточное вещание, как например в Ютюбе и прочих видеохостингах - можно выставить приемлемое для себя качество, на которое способно интернет-подключение каждого конкретного пользователя - 240, 360, 720 или 1080 пикселей. mulpitle bitrateПоявляется возможность найти «золотую середину» между качеством изображения и тормознутостью интернета для каждого конкретного пользователя, и все становятся счастливы. Картинка с теннисисткой как-бы иллюстрирует это более наглядно: каждому устройству и каждому типу подключения к Интернету больше подходит свой битрейт, универсального видеопотока не существует. Технически задача решается транскодированием исходного видеопотока в несколько видеопотоков разного качества на серверной стороне, и небольшой доработкой с реализацией возможности ручного или автоматического выбора качества на стороне плеера. Такое транскодирование сразу же делает видеохостинг, когда он обрабатывает файл, который вы туда залили. Эта процедура достаточно ресурсоёмкая, но она делается единожды - в результате на сервере хранится уже не один файл, а набор видео разного качества, любое из которых сервер готов отдать в зависимости от запроса клиента.

С онлайн-вещанием всё гораздо сложнее. Проблема в том, что такой транскодинг надо делать постоянно, поскольку у потокового вещания в режиме реального времени нет начала и конца в привычном понимании. Как я уже сказал, транскодирование - очень ресурсоёмкий процесс, например мощный современный сервер способен транскодировать только 4 веб-камеры одновременно (из исходного 1080p в 3 других битрейта), при этом его вычислительная мощность расходуется почти полностью и для обработки следующих 4х камер надо ставить следующий современный мощный сервер. В общем, такой экстенсивный путь достаточно затратен и неэффективен как с точки зрения единовременных вложений, так и в плане ежемесячных текущих расходов. Есть другой, более элегантный способ организации транскодирования посредством специализированной графической вычислительной системы, такие штуки делает например NVIDIA. Это очень мощные специализированные графические процессоры Tesla, которые используют военные для баллистических расчетов, метеорологи - для моделирования погоды, дизайнеры - для 3D-моделирования и анимации. Мы купили нужное оборудование и практически год занимались разработкой действующей модели транкодинга "на лету", поскольку готовых решений таких задач, как наша - на потребительском рынке пока не существует.

Особо удивляться тут нечему, ибо изначально, в процессе создания самой платформы «Сочикамеры» мы также сталкивались с полным отсутствием приемлемых готовых решений по созданию сайта с онлайн-трансляцией большого количества веб-камер. Приемлемых прежде всего в части одновременных защиты контента, многопоточного стабильного HD-вещания под нагрузкой и совместимости с RTSP-протоколом. В итоге получилось, что более половины работающего в «Сочикамере» сегодня софта - это самописные вещи, созданные специально под наш заказ. Радует то, что разработка ПО - это пожалуй наименее географически-зависимая отрасль. Над нашим проектом одновременно работали люди, находящиеся в Сочи, Минске, Москве и Индонезии. И мы не транснациональная корпорация, а малое предприятие. Попробуйте представить такое в любой другой отрасли (кроме, наверное, дизайна) - нереально вообще.

Так вот, возвращаясь к задаче транскодирования - она пока не решена. Известные нам пути обойдутся порядка в 60k$ только на лицензирование софтовых модулей транскодинга, что для некоммерческого проекта напрочь лишено смысла. Есть ещё один, более примитивный вариант, который мы наверное и запустим в этом году. Он, конечно, не такой изящный и высокотехнологичный, но свою задачу по трансляции низкобитрейтовых потоков и возможности выбора - он решит. Сейчас разработчики заняты ещё одним очень интересным мультимедийным проектом, который я надеюсь вам анонсировать в ближайшей перспективе. А уже после него - реализуем мультибитрейт на Сочикамере, а с ним вместе и анонсируем мобильное приложение, которое кстати давно готово.

Видеоархив, предоставление записей



hard disk arrayПосле модернизации сервера видеозаписи мы увеличили время хранения данных до 10 суток вместо 3х. Сейчас том, отведённый под видеоархив, насчитывает 50 терабайт, это RAID-массив 6-го уровня с резервированием.
Записи предоставляются по официальному запросу от правоохранительных органов. Если такого запроса нет и вы хотите посмотреть записи - мы их покажем на экране, но в виде файла отдавать не будем. По опыту могу сказать следующее: если вы (не дай Бог) действительно участник какого-то инцидента, попавшего на видео, то заручиться письмом из «органов» проблем не составит - у нас таких писем уже вагон. Денег даже и не начинайте предлагать - за выдачу видеозаписей мы денег не брали и брать не будем. «По-братски» тоже ничего не получится. Только посмотреть глазами или принести запрос.

На что хочется особо обратить внимание дорогих читателей:


exclamation

  1. Если вдруг что-то случилось и есть вероятность того, что записи могут понадобиться в дальнейшем - позвоните нам по телефону (862)2-960-911 и опишите ситуацию. В этом случае мы хотя бы сможем найти нужный эпизод и сохранить его у себя на диске, чтобы даже по прошествии 10 суток запись не пропала.

  2. Если вы хотите с нами связаться - не надо писать на Приветсочи, во Вконтактик (меня там нет), звонить кому-то на сотовый или отправлять пространные письма электропочтой. Перейдите к пункту 1.

  3. Когда запрашиваете видео - будьте конкретны, указывайте номер камеры в формате сайта (r5, r22) и нужный отрезок времени. Когда нам пишут что-то типа «в районе объездной вечером в среду» - мы даже и начинать поиск не будем. Потому, что это надо отдельному человеку сесть и несколько часов, а то и полный рабочий день просматривать записи. А нам работать надо.

  4. Записи выдаются только с камер, представленных на сайте «Сочикамера». Остальные камеры либо не наши, либо вынесены за скобки.

  5. Записываются только камеры из раздела «дорожная обстановка». Занимать архив закатами и прибоями я посчитал излишне расточительным.

  6. Мнение о том, что мы сидим и постоянно зырим в камеры - ошибочно. Мы не ситуационный центр. Если что-то случилось в поле видимости наших камер - позвоните нам, мы сможем сохранить видео для полиции.



Я не выпендриваюсь. Просто есть опыт общения с людьми по данному вопросу на протяжении пяти с половиной лет.

Новый домен sochi.camera



Весной этого года мы выиграли конкурс на гео-домен «sochi» в новом домене верхнего уровня «.camera». Внимательный пользователь наверняка заметил, что на старом адресе sochicamera.ru установлен редирект и происходит автоматический переход на новый адрес. Получилось короче и интереснее, по-моему. Правда, не все текстовые редакторы и почтовые клиенты признают .camera как доменное имя и приходится дописывать "http://" - видимо должно пройти какое-то время, чтобы все обновились и устаканились. Действующий сейчас адрес сайта: http://sochi.camera


Архитектура



Почему-то многие думают, что основная часть проекта Сочикамера - это непосредственно веб-камеры. Мол достаточно купить нужное количество камер - и всё начнёт работать. К сожалению, камеры - это примерно 10% от всего проекта. Ещё процентов пять - это веб-интерфейс (сайт), на который вы заходите. Остальное - это серверная часть для обработки и вещания видео и звука, и наша сеть передачи данных. Сейчас ядро "Сочикамеры" содержит 5 серверов, включая 2 стримера, 1 сервер видеоархива, 1 веб-сервер и 1 сервер статистики, обрабатывающий в частности данные с температурных датчиков. Можно назвать это «движком», но на самом деле там несколько движков и созданная система является полностью масштабируемой с возможностью распределения нагрузки. Другими словами, количество веб-камер или других видеопотоков, которые мы можем транслировать через «Сочикамеру», теоретически не ограничено.

Любопытный факт: любой оператор связи имеет уникальную возможность развивать проекты, подобные нашему. Судите сами: исходящий канал всегда недогружен, а наличие собственной сети позволяет гонять трафик по городу практически бесплатно. А видеокамеры как раз генерируют много исходящего трафика и расположены по всему городу. И в самом городе есть что показать. Странно, что идея реализовать такой сервис пришла только к нам. До сих пор не понимаю почему другие тупят.

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

Вот прям схему вам накидал, для наглядности. Схема максимально упрощена, сеть передачи данных изображена в виде палочки, а серверная часть - в виде квадратика.

Вариант 1 - работа напрямую от камеры
webcast layout 1

преимущества:

  • дёшево и просто



недостатки:

  • ограниченное количество пользователей. На камерах есть аппаратные ограничения по количеству подключений.

  • камера не справляется с нагрузкой. в нормальной ситуации камера рассчитана на 1-2 одновременных подключения. Подключение бо́льшего количества зрителей приводит к снижению количества кадров в секунду на каждого зрителя. К примеру, если на 1 зрителя камера выдаёт 30 кадров в секунду, то на двух придётся уже 15 кадров в секунду на каждого. Визуально изображение дёргается и становится похожим на дешёвое анимэ. Есть камеры помощнее, но как правило больше 4х подключений без последствий не тянет никакая.

  • забивается канал связи до камеры. Камеры в основном подключены где-то на периферии, каналами 100мб/с и ниже. Десяток видеопотоков забьёт такой канал напрочь.

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



Вариант 2 - работа через серверную платформу
webcast layout 2

преимущества:

  • неограниченное количество подключений на одну камеру. Наш рекорд - 2 с лишним тысячи одновременных подключений на одну камеру

  • широкие возможности по защите контента. Программно, на мощном сервере.

  • один видеопоток от камеры до сервера. Камера работает максимально качественно.

  • канал связи до камеры загружен минимально. Всего один видеопоток.



недостатки:

  • дорого и сложно. Если самому делать.



Если вы хотите поставить камеру у себя на объекте



Мы устанавливаем камеры бесплатно. Чтобы нас заинтересовать, должно выполняться 2 пункта:


  1. ваш объект подключен к нашей сети на любом тарифе, а тарифы у нас выгодные.

  2. у вас действительно есть интересный вид, который заинтересует кого-то ещё.


При установке камеры мы можем разместить информацию рекламного характера в описании данной камеры, в том числе активные ссылки на ваши сайты, блоги и т.п. Также картинка с этой камеры может быть размещена на вашем сайте с помощью html-кода вставки. О нём чуть позже.
В качестве примера можно привести сотрудничество с частным отелем "Апартаменты на Весёлом" с которого открывается панорамный вид на Имеретинскую низменность. Камера s34. В результате сотрудничества мы получили хорошую точку обзора, а отель - размещение своей рекламы на странице, которую просматривают более 1000 раз ежесуточно. Кстати, этой же камере принадлежит рекорд по количеству посещений, об этом чуть позже.

Кроме того, работая с нами, не нужно заботиться об оплате дополнительного интернет-канала для камеры. Мы подключаем камеры отдельно от клиентского интернета, в другом VLANе.
...


Нагрузка, стресс-тестирование



Наибольшее количество посетителей отмечено 7 февраля 2014 года, в день открытия Олимпийских игр. В тот день сайт посетили 598292 пользователя, в момент открытия Игр наши веб-камеры смотрели более 58 тысяч человек одновременно, а общий объём передаваемых видеопотоков колебался от 3 до 4 гигабит в секунду. При этом камеру s34 в момент открытия игр смотрело 2 тысячи человек одновременно. Пришлось даже остановить тур, оптимизировать видео и вручную управлять камерой. В условиях столь высокой нагрузки наш портал отработал стабильно, без технических сбоев.
sochicamera.ru max load график Яндекс-метрики

В продолжении предыдущей заметки ...

html-код вставки видео



Одной из новых функциональных возможностей нашей платформы является вставка живого видео в сторонние сайты наших партнёров посредством размещения html-кода. Примерно так же это реализовано на основных видеохостингах, например Youtube. Формат кода вставки не является каким-то секретом, вот его новая версия:



Поскольку на сайте "Приветсочи" пользователям запрещено добавлять свои классы, то здесь можно использовать старый вариант кода и внедрить объект, а не класс:



Вебмастера разберутся.

а вот результат выполнения этого кода вашим браузером:



Хочу особо подчеркнуть, что на мобильных устройствах Apple новая версия кода тоже работает - там вызывается системный плеер QuickTime. На всех остальных устройствах используется Flash-player. Кстати, точно так же теперь работает и основной сайт.

Авторизация происходит на нашей стороне, мы прописываем кому какую камеру отдаём, с какими ограничениями. Об этом договариваемся в процессе установки камеры.

Для пущей наглядности приведу живые примеры подобного взаимодействия:

гостиница "Приморская"
пансионат "Знание"
курорт "Горки Город"

Другие варианты использования сервиса "Сочикамера"



"Сочикамера" - это универсальная платформа для потоковой трансляции видео и стерезвука. Соответственно, только лишь веб-камерами наши возможности не ограничены. Можно транслировать вообще всё что угодно: спортивные мероприятия, концерты, вечеринки, телевизионные программы.

Например, мы попробовали транслировать местный телеканал "СТРК", получилось вполне успешно. Можно помимо "достопримечательностей" и "дорожной обстановки" сделать раздел "телеканалы" и запустить туда сколько угодно разных телеканалов. Если другие телевизионщики по примеру СТРК захотят такое реализовать - нет ничего проще.

Вот, можете кинцо посмотреть:



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

Вот, можете музычку послушать:



Опять же телевизионщикам, только уже краевым, принадлежит инициатива использования онлайн-видео с камер в своём вещании. Вполне живенько получается дополнять выпуски новостей такими вставками. Денег за это мы, опять-таки, не берём, а вот от кросс-промоушена не отказываемся.

Кроме того, мы провели интеграцию "Сочикамеры" с системой кабельного телевидения TVIP, которую используем мы и другие участники Сочинского Медиа-Союза. В итоге 53 камеры можно смотреть по телевизору, в нашей сетке вещания это каналы с 281 по 333. Вот примерно так это выглядит:



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

Спасибо за внимание, особенно тем, кто прочитал.

Предложения, пожелания, вопросы ...