This post is also available in: Английский
Сервис спортивных трансляций BBC Olympics стал одним из главных событий 2012 года. Индустрия видеосервисов вышла на новый уровень, а Олимпийские Игры 2012 года все уже привыкли называть «по-настоящему цифровыми». Очень важно отметить всю важность накопленного опыта и идти дальше на базе этих новых достижений. В этой статье мы рассмотрим этот проект, его реализацию и ценный опыт, который вы можете использовать в своих проектах.
Оценить масштаб события можно по статистике использования сервиса, которую опубликовали по завершении Олимпийских Игр. В этой статье Kewin Towes также подводит итог проведения Олимпийских Игр и гордится ролью, которую сыграла в этом проекте компания Adobe.
С точки зрения дизайна сервиса стояла задача объединить все устройства в единый сервис, создать одну историю, дать возможность пользователю переключаться между устройствами, но с ощущением единого сервиса. Соответственно дизайн каждого приложения учитывал особенности потребления контента на конкретных устройствах. Основу нового сервиса составил успешно работающий проект BBC Sport.
Интересный факт, о котором рассказали BBC в своем блоге — это анализ аудитории. BBC проектировало сервис под так называемых «Main Eventers». Это люди, в жизни которых спорт не играет важной роли, но интерес которых сильно возрастает во время крупных спортивных событий. Таким образом, им было важно совместить широкий набор функциональных возможностей для профессиональных зрителей спортивных трансляций (BBC Sport) и удобство использования для неподготовленной аудитории — «Main Eventers». В сервисе одним из центральных элементов является видеоплеер с очень широким набором функций.
Детальный обзор процесса разработки концепции и дизайна сервиса приведен в блоге BBC.
Архитектурные решения
Схема высокоуровневой архитектуры сервиса приведена в блоге BBC.
Веб-платформа
BBC использовали традиционную для своих сервисов архитектуру с двумя уровнями бэкэнда (Java и PHP).
- Многообразие источников данных о спортивном событии обрабатывается Java бэкэндом (наиболее критичен с точки зрения производительности работы).
- Генерация страниц выполняется на PHP.
- Для кеширования использовались mod_cache, Varnish и CDN.
На наш взгляд, подход с генерацией страниц на сервере уходит в прошлое, т.к. с этой задачей гораздо лучше справляются клиентские устройства (браузеры и приложения). Генерация страниц, как правило, заключается в шаблонизации — применении шаблона отображения к данным. Соответственно, при N разных форматах устройств требуется N разных шаблонов. Также ситуация осложняется тем, что разработчики сайта и приложений должны постоянно вносить правки в серверном коде в соответствии со своими потребностями. Нашим клиентам мы всегда рекомендуем реализовывать API доступа к данным, которое могут использовать все сайты и приложения. В частности, такой подход использует Netflix. Главное достоинство данного подхода в том, что разработчики конкретной платформы, зная все ее особенности, могут создать оптимальный сервис на конкретном устройстве при помощи данных с сервера. Впрочем, создание оптимального сервиса, как правило, требует больших затрат, чем при использовании унифицированного подхода на базе HTML(5).
Основу сервиса составляет интерактивный видеоплеер. Подробности реализации видеоплеера приведены здесь. Интересный обзор стратегий, используемых при обновлении данных в видеоплеере, приведен в блоге BBC (они применимы к любым интерактивным данным, отображаемым в приложениях и на сайте). К сожалению, не рассмотрен метод передачи критичных данных при помощи Push-уведомлений, например через сокет. Нам такой подход представляется перспективным и обеспечивающим более высокую интерактивность, чем регулярный опрос сервера.
Соответственно, используя HTML-подход, компания BBC создала приложения на базе Adobe PhoneGap. Такой подход экономит время и средства — серверная часть просто генерирует страницы разных форматов под разные устройства. С другой стороны, такой подход сильно сужает интерактивность приложений, создавая множество ограничений. Мы рекомендуем использовать Adobe AIR или Java для разработки Android-приложений и Objective C для iOS.
Подробности проектирования архитектуры приведены здесь. Некоторое время назад компания BBC опубликовала статью, описывающую общие принципы построения масштабируемых архитектур в своих проектах на примере BBC iPlayer, а в блоге Highscalability был составлен емкий дайджест этих принципов.
CMS
Очень важной частью платформы BBC является CMS — система управления контентом. Разработанная в BBC технология для работы с контентом является гибкой архитектурой, позволяющей поддерживать спортивные события. Данный подход в BBC обозначают как Dynamic Semantic Publishing; он был хорошо отработан в проекте BBC Sports. История о переходе на семантический подход к управлению контентом есть тут (на примере Чемпионата мира по футболу 2010). Суть сводится к использованию RDF, глубокой иерархии тегов и сущностей в метаданных каждой единицы контента. Такой подход позволяет динамически генерировать очень сложные динамические страницы с подборкой дополнительной информации относительно основной темы. Структура и принципы работы BBC CMS хорошо описаны в свежей статье BBC здесь.
Dynamic Semantic Publishing позволил BBC сгенерировать более 10000 страниц, рассказывающих о спортсменах, типах соревнований, видах спорта и командах стран. Обзор BBC по использованию источников данных для генерации спортивных страниц есть здесь.
Видеоплатформа
Видеоплатформа BBC была предварительно обкатана на теннисном турнире Wimbledon. По большому счету, она состояла из трех частей: энкодеры Elemental (и система управления ими), ориджины Adobe Media Server и сторонние CDN (Akamai и Limelight). Платформа осуществляла трансляцию 24 HD каналов одновременно.
Известно, что в качестве транскодеров BBC использовали продукцию Elemental. Данный поставщик известен своими решениями с поддержкой GPU (они даже доступны в некоторых центрах обработки данных Amazon EC2), что дает возможность использовать софт на большом ассортименте серверов и получить значительный прирост производительности за счет использования GPU для транскодинга.
В качестве медиасерверов использовалась система Adobe Media Server. Steve Allison дал замечательное интервью про использование продуктов Adobe во время Олимпийских Игр. Для трансляций использовались 8 профилей H.264 — от 54kbps (224×126) до 3500kbps(1280×720). Медиасерверы готовили два вида HTTP-стриминга: HLS (Apple) и HDS (Adobe). Впрочем, для некоторых устройств они все же выдавали RTMP в CDN. Для создания VOD-версий трансляций BBC компоновали нарезанные для Live трансляции чанки в MP4 файл.
Еще интересная особенность, о которой вкратце рассказано в блоге, — это использование во Flash-плеере информации об абсолютном таймкоде в видеопотоке. Это позволяет выполнять в видеоплеере навигацию (seek) на конкретное событие с очень высокой точностью.
Учитывая большое количество одновременных событий и необходимость удобства работы с видеоплатформой, компания BBC создала внутреннюю систему управления видеотрансляциями под названием Marvin. Marvin предоставляет доступ ко всем энкодерам и настройкам стриминга через единый интерфейс. Используя этот единый интерфейс, редакторы могут, запускать и останавливать энкодеры, подключать источники видео, маршрутизировать видеопотоки на нужные медиасерверы, а также осуществлять мониторинг работы оборудования.
Организация передачи видеопотока и сопутствующих этому контенту метаданных описана здесь.
Большой экран Connected TV
Уже буквально через несколько недель после запуска проекта Приложение для устройств Connected TV использовалось более чем 200000 пользователями в день. Эксперименты с телевизорами в BBC начали давно, начав с Adobe Flash и MHEG-5. Сейчас почти все ТВ приложения реализованы на HTML; впрочем, понимание HTML у каждого производителя ТВ-устройств свое, что делает разработку под каждое устройство уникальным проектом. В некотором будущем видится решение данных проблем за счет стандартизации браузеров, встроенных в ТВ устройства. Основные претенденты — Digital Television Group и HbbTV. В ближайшее время должен запуститься первый крупный HbbTV-проект в Европе (одним из поставщиков решений в проекте является Harmonic — наш партнер, поставщик решений для транскодинга).
В наших проектах мы тоже часто разрабатываем ТВ приложения и стоит отметить, что данная технология пользуется все большей популярностью у телезрителей. В нашем блоге опубликованы статьи о приложениях для LG и Samsung.
Сложность и трудоемкость разработки приложения очень сильно зависит от конкретной задачи, но согласно нашему опыту разработка ТВ-приложения и его подключение к существующему проекту требует от 2 до 9 человеко-месяцев работы (по большей части это определяется количеством экранов и уровнем их интерактивности, а также удобством платформы для разработчиков — наличием средств отладки и диагностики). Мы занимались разработкой приложений под LG, Samsung, Panasonic, Sony, Philips.
Обеспечение качества
Учитывая массовый характер и сравнительную редкость проведения Олимпийских Игр, BBC пришлось пересмотреть подход к тестированию и обеспечению качества своего сервиса. Процесс тестирования занял несколько месяцев, причем команда тестирования была не меньше любой команды разработки. В основе процесса обеспечения качества лежали:
1. Использование разработанной технологии в сторонних проектах (F1 и Wimbledon). Запуск beta сервиса.
2. Проведение тестовых Олимпийских Игр.
Источники
1. BBC Blog: The story of the digital Olympics: streams, browsers, most watched, four screens
2. Adobe Blog: The biggest broadcasting event in our 90 year history
3. BBC Blog: Olympics: User Experience and Design
4. BBC Blog: Architecture Overview Diagram
5. BBC Blog: Audio and Video Streaming the Olympics
6. TechRadar: How Adobe is powering the BBC’s Olympics coverage
7. Elemental Blog: Elemental Streams the Olympic Games with Broadcasters Worldwide
8. BBC Blog: More traffic, more videos, more screens: building the BBC’s Olympic site
9. BBC Blog: Launch of Live Interactive Video Player
10. BBC Blog: Building the Olympic Data Services
11. BBC Blog: BBC Sport App on Connected TVs: launches on TiVo
12. BBC Blog: Building Connected TV Apps
13. BBC Blog: BBC World Cup 2010 dynamic semantic publishing
14. BBC Blog: Sports Refresh: Dynamic Semantic Publishing
15. BBC Blog: Olympic Data Services and the Interactive Video Player