WebRTC (Web Real Time Communications) - это проект нового стандарта консорциума W3C, главная цель которого - обеспечить веб-браузеры возможностью работы с потоковым видео, в частности видеосвязью по принципу "точка-точка" в режиме реального времени. В этой статье мы подробнее расскажем о современном состоянии стандарта и его перспективах.
История вопроса
На рынке существует целый ряд решений и технологий для организации видеосвязи как через отдельные приложения, так и через плагины для браузера. С точки зрения браузерных решений лидирующие позиции занял Adobe Flash. Его поддержка была интегрирована в подавляющее большинство компьютеров (платформ). До сих пор большинство браузерных решений видеоконференцсвязи для персональных компьютеров используют именно Flash, хотя и высказываются претензии по поводу больших задержек и нестабильности приложений. Однако по мере появления многочисленных мобильных устройств началось постепенное сокращение амбиций. Сначала Adobe прекратила поддержку мобильных платформ; в том же 2011 году компания "отличилась" конфликтом с Apple, а в следующем - прекратила обновление и поддержку плеера под Linux.
"Компания Apple не хотела способствовать конкуренции приложений Flash с контентом в App store. Наличие поддержки Flash в телефонах iPhone означало бы отсутствие необходимости простым приложениям проходить модерацию", - считает Станислав Солдатов, технический директор компании TrueConf.
На данный момент Flash все еще поддерживается львиной долей платформ. Правда, пик популярности технологии явно позади.
Что касается конкурентов (к примеру, Microsoft Silverlight), то до сих пор ни один из них так и не смог достичь масштабов Flash. Несмотря на другую архитектуру и возможные преимущества на фоне Flash, с точки зрения пользователя они обладают тем же самым недостатком - требуют установки дополнительного модуля (плагина) к браузеру.
"Конечные пользователи не испытывают доверия к плагинам. И небезосновательно. На данный момент не понятно, чего больше: плагинов, реализующих поддержку дополнительных технологий, или вредоносного программного обеспечения под их видом. WebRTC построен на принципиально иной идее. Он разрабатывается как часть стандарта HTML5, т.е. после принятия должен будет поддерживаться всеми браузерами в "минимальной комплектации". Тег "видео" и раньше входил в HTML5, но стандарт не определял детали. Производители браузеров реализовывали поддержку тех кодеков, которые считали наиболее перспективными. Поэтому на рынке все равно оставались определенные разночтения. Кроме того, не было ориентации на работу с трансляцией видео в режиме реального времени. Сейчас же и кодеки, и методика организации соединения должны быть зафиксированы", - комментирует Станислав Солдатов.
WebRTC изнутри
Как было отмечено выше, API WebRTC разрабатывалось на основе идеи поддержки работы с мультимедиа-потоками самим браузером (всеми браузерами по одинаковой схеме, вне зависимости от платформы и разработчика).
Разработка API была инициирована Google с 2010 года. В основу WebRTC легли технологии компании Global IP Solutions (GIPS) приобретенной Google в 2011 году, а также видеокодек VPx, разработанный в On2 Technologies (компания была куплена Google в 2010 году, и одновременно с этим ее разработка, кодек VP8, была переведена в разряд проектов с открытым исходным кодом).
С мая 2011 года исходные коды проекта открыты, при этом библиотека WebRTC (эталонная реализация поддержки) распространяется по лицензии BSD-3. Сейчас развитием API занимается рабочая группа в составе консорциума W3C, в которую входят представители Google, Mozilla, Cisco, Ericsson, Skype, и целого ряда других заинтересованных компаний.
Технически WebRTC подразумевает решение трех основных задач:
- Обеспечение доступа браузера к веб-камере и микрофону конечного пользователя исключительно средствами HTML5 и JavaScript без дополнительных инсталлируемых модулей или Flash. Для этого в исходный код браузера его разработчик встраивает поддержку определенных компонент.
- Создание соединения для передачи аудио-, видеопотока, к примеру, в режиме обычного звонка или видеоконференции через Интернет (в том числе peer-to-peer).
- Обеспечение передачи потока данных.
Для решения этих задач используются три основных API, входящих в WebRTC: MediaStream, RTCPeerConnection и RTCDataChannel.
MediaStream обеспечивает получение аудио-, видеопотока, который в общем случае может включать несколько синхронизированных "дорожек", к примеру, один поток видео и две аудиодорожки для левого и правого каналов стереомикрофона. Надо отметить, что источником видео может являться не только веб-камера, но и рабочий стол пользователя (что дает возможность демонстрировать экран).
Следующий API, RTCPeerConnection, обеспечивает соединение "точка-точка" для передачи полученных медиапотоков. На его "совести" лежит обработка сигнала (в частности, очистка картинки от шумов, подстройка громкости микрофона), контроль используемых кодеков (перекодирование на лету, если видео с камеры закодировано нестандартным образом), обеспечение непосредственно самого соединения через сеть, а также шифрование и управление пропускной способностью, т.е. подстройка параметров видеосигнала под имеющийся канал.
RTCDataChannel обеспечивает двустороннюю передачу данных через установленное соединение. Как и медиапоток, передаваемые данные шифруются.
Несмотря на потенциальную возможность построения конференции нескольких конечных пользователей только лишь на базе клиентов (к примеру, по ячеистой топологии, где каждый клиент соединен со всеми остальными, или по топологии "звезда", где нагрузка, связанная с обработкой одновременно всех потоков, ляжет только на одного клиента), эту задачу оптимально решать с помощью "сигнального" сервера, который будет осуществлять функции вызова и "надзора" за разговором: корректно завершать передачу потока, добавлять участников (если речь идет о конференции) и т.п. В первую очередь этот сервер выполняет функцию запроса и передачи служебной информации (сигналов): какие форматы и варианты передачи поддерживаются каждой из сторон, как к ним подключиться, какие следует использовать ключи шифрования.
Стоит отметить, что для организации сервиса необходим также механизм преодоления "барьеров" NAT-ICE, который работает посредством одного из протоколов: STUN или TURN. Соответствующие сервера разработчики могут разворачивать в своей IT-инфраструктуре или же обращаться к сторонним провайдерам.
Недостатки WebRTC
На сегодняшний день стандарт пока еще сложно назвать устоявшимся. Идет его активная разработка. Таким образом, написанный сейчас код вполне может потребовать доработки в ближайшем будущем. В отдаленной перспективе ожидается выпуск официального WebRTC API. (Существующая версия имеет номер 1.0, но при этом тексту присвоен статус working draft. Будут ли вноситься в стандарт какие-то значительные изменения перед выпуском официальной версии - предсказать невозможно. Многие специалисты считают, что эта версия практически готова, а статус draft за разработками W3C может сохраняться достаточно долго без фактических изменений в тексте документа. С другой стороны, W3C в преамбуле документа подчеркивает, что могут последовать любые изменения.)
Еще одной проблемой WebRTC на сегодняшний день остается список обязательных для поддержки кодеков. Согласия компании-участники достигли пока только по одному вопросу - все они считают, что для WebRTC необходим некий основной кодек, который будет поддерживаться всеми браузерами, дабы сохранить истинную кроссплатформенность.
Основным для WebRTC на данный момент является приобретенный Google VP8. Это принцип, на котором настаивает Google, стремящийся применять лишь свободно распространяемые решения (royalty free), в число которых не входит H.264. Google активно работает над кодеком VP9, который позволяет приблизительно в 2 раза уменьшить полосу пропускания.
Но разговоры о том, что необходимо использовать именно H.264 (а в перспективе - H.265), не утихают. Одним из драйверов этой идеи является компания Cisco, использующая этот кодек в своих программных и аппаратных решениях для коммуникаций и совместной работы . В качестве возможного решения, которое могло бы применить "свободный" WebRTC с проприетарным кодеком, Cisco предлагает выпустить что-то вроде собственного программного кодера (за который компания заранее заплатит все полагающиеся взносы), который можно будет бесплатно использовать .
"Сложность заключается в том, что "бесплатной" поддержка останется только для браузеров. "За бортом" останутся производители стороннего программного обеспечения, вроде TrueConf, а также разработчики аппаратных систем, например Polycom", - комментирует технический директор TrueConf Станислав Солдатов.
Кроме того, такой кодер нарушает основной принцип WebRTC, заключающийся в использовании royalty free решений. По этой причине его не поддерживает Google. Правда, и собственное решение компании также не совсем "чисто". До сих пор ее "свободный" кодек VP8 подвергается патентным нападкам .
В итоге встречу за встречей компании так и не могут прийти к единому решению.
Как и статус draft, неопределенность с кодеками в первую очередь тормозит развитие бизнеса на основе данного API.
Преимущества WebRTC
Несмотря на статус "активной разработки", уже сейчас WebRTC есть чем похвастаться на фоне того же Adobe Flash. В частности, существующая реализация WebRTC, судя по отзывам, гораздо логичнее и имеет меньше недостатков, нежели господствовавшие ранее на рынке плагины Flash . А с точки зрения стабильности браузера и защищенности по отношению к внешним атакам WebRTC опережает любые плагины .
Уже сейчас технология позволяет сделать лучше качество звука (нежели в решениях на базе Flash), в том числе за счет встроенной функции автоматической регулировки микрофона. Для передачи аудио используются кодеки Opus и G.711 (Opus позволяет подстраивать качество звука под ширину доступного канала).
В целом, благодаря открытости платформы, интерес бизнеса к WebRTC растет в геометрической прогрессии. Хотя пока что значительную часть ресурсов отнимает оттачивание технических деталей, многим компаниям кажется стратегически верным использование независимых решений. Тем более что именно для бизнеса WebRTC может дать множество новых инструментов.
Реальные воплощения
На сегодняшний день WebRTC API уже поддерживается ведущими браузерами под Windows. Первой поддержка была интегрирована в Google Chrome, но уже в начале этого года было опубликовано видео с первого кроссбраузерного звонка между Chrome и Firefox Mozilla. Позже о реализации поддержки сообщили Opera и "Яндекс". На всех остальных windows-браузерах есть теоретическая возможность обеспечить работоспособность API через дополнительный браузерный плагин (webrtc4all). Правда, основное преимущество WebRTC (работа без плагинов) в этом случае будет утеряно. Да и работоспособность пока никто не гарантировал. "Мы пытались использовать его для работы с Internet Explorer, но так и не смогли добиться стабильной работы", - дополняет Станислав Солдатов. Также технология есть в Chrome для Linux и Mac OS X.
С весны 2013 года было объявлено о реализации поддержки WebRTC в Chrome для Android (пока, правда, браузер не является стандартным для данной платформы). Сейчас WebRTC API уже доступно в качестве библиотеки C++, что позволяет создавать не только браузерные сервисы, но и задействовать технологию в любых самостоятельных приложениях . Есть и коммерческие платформы, решающие сходную задачу, к примеру, tokbox (tokbox.com/opentok).
Несмотря на столь обширный "захват" рынков, пока о доминировании WebRTC говорить рано. Картина остается неполной без ситуации с двумя крупными производителями оборудования и ПО: Microsoft и Apple.
Представители Apple пока публично не высказываются о проекте. До недавнего времени считалось, что эта компания технологию попросту игнорирует, но в последние месяцы появилась информация о том, что Apple активно участвует в заседаниях рабочей группы WebRTC.
Microsoft включилась в работу с WebRTC уже более года назад. Согласно первым сведениям, просочившимся тогда в прессу, разработчики компании хотели "научить" узлы WebRTC взаимодействовать с обычной версией Skype без дополнительных шлюзов . Позже, правда, оказалось, что у Microsoft вообще свое видение всей технологии. Некоторые специалисты считают, что здесь разногласия сводятся к упомянутой выше поддержке кодеков.
Наличие "альтернативной" реализации WebRTC, пускай даже в части кодеков (не важно, кто из разработчиков в данном случае лучше соответствует потребности рынка), несколько портит общую стратегию развития технологии. Наряду с теми, кто уже пробует свои силы в этом направлении, есть значительная доля компаний, занявших выжидающую позицию.
Но ряд вполне работоспособных решений на рынке уже есть.
Более года назад начали массово появляться SIP-решения, эксплуатирующие WebRTC API . Один из этих продуктов уже стал базой для решения, нашедшего коммерческое применение (callbacker.com). Начали появляться шлюзы, обеспечивающие стыковку WebRTC- и SIP/VoIP-телефонии, в том числе ориентированные на бизнес. Одно из таких решений - Flashphoner Web Call Server 3. Правда, упомянутое решение, дабы закрыть большую нишу на рынке, поддерживает одновременно и Flash. В августе о поддержке WebRTC для видеоконференций через браузер объявила компания TrueConf (т.е. стандарт WebRTC был использован для готового решения, ориентированного на корпоративных заказчиков).
Надо отметить, что возможность контакта с посетителем через браузер без плагина - это несколько больше, чем просто новая реализация идеи "унифицированных коммуникаций". В руки бизнеса эта технология дает новые возможности, позволяющие проследить всю цепочку действий посетителя, получить дополнительную информацию о нем. Это уже совсем другой сервис.
В общем случае WebRTC позволяет организовывать не только коммуникационные сервисы. К примеру, не так давно был запущен банальный инструмент, позволяющий с помощью веб-страницы делать снимки своей веб-камерой и применять к ним различные эффекты (webcamtoy.com). Это лишь один из примеров привлечения посетителей интересным интерактивом. Еще более перспективное направление работы - изменение содержимого веб-страницы в зависимости от положения пользователя (зафиксированного веб-камерой). Подобные инструменты могут интегрироваться в социальные сети, игры и т.п.
Существует даже проект построения распределенных сетей для статического контента, в том числе "тяжелого" мультимедиа на базе WebRTC (peercdn.com) . Фактически речь идет о встраивании в код страницы короткого скрипта, который обеспечит передачу контента по принципу пиринговой сети через ресурсы открывшего сайт пользователя. Очевидно, в будущем стоит ждать аналогичных самостоятельных решений на сайтах.
Некоторые специалисты прочат WebRTC доминирующее положение на рынке в обозримом будущем . Считается, что достойную конкуренцию технология может составить не только "классическим" VoIP-сервисам, но и обычной стационарной телефонии. Операторы связи уже сейчас конкурируют со Skype и подобными ему службами. Но сейчас эта конкуренция действует на уровне тарифов. Использование альтернативных инструментов пока что требует от пользователя дополнительных действий: поиска и скачивания программного обеспечения, авторизации в сторонней службе. Считается, что поддержка голосовой и видеосвязи различными устройствами в "минимальной комплектации" (с установленным браузером) убьет желание пользоваться обычной стационарной связью, поскольку здесь конкуренция начнется уже на совершенно другом уровне. Не будет выбора между "платить дорого за то, что уже есть" или "платить дешево, совершив дополнительные действия". Будут низкие тарифы IP-телефонии при отсутствии необходимости собственноручно что-то устанавливать и настраивать. Правда, не все согласны с таким описанием ситуации.
"На мой взгляд, процедура установки новых приложений на iOS и Android реализована достаточно просто, так что люди уже не боятся установить приложение на своем мобильном устройстве. Да и на стационарных компьютерах этот барьер тоже не столь серьезен. Я думаю, что WebRTC на этом рынке ничего не изменит", - дополняет Станислав Солдатов.
У идеи WebRTC есть также и масса критиков. Один из основных их аргументов апеллирует как раз к неоднозначности дальнейшего развития проекта. Пока технология поддерживается лишь ограниченным количеством браузеров, которые на самом деле в сумме имеют лишь около 60% рынка,причем по большей части - частных пользователей (На конференции Google I/O 2013, проходившей в мае 2013 года, когда еще не были представлены разработки Opera и Яндекс.Браузер, число конечных точек с поддержкой WebRTC оценивалось более чем в 1 миллиард) . В бизнесе широко используется Internet Explorer или Safari в случае iOS .
Благодарим за консультации при написании статьи Станислава Солдатова, технического директора компании TrueConf.
Дополнительное чтение: