В середине мая в Сан-Франциско прошла конференция Google I/O 2013, на которой Google по традии показывает свои самые перспективные продукты и рассказывает разработчкам о новых инструментах и технологиях, которые станут доступны в ближайшем будущем. В этот раз конференцию открывал Ларри Пейдж. К сожалению, новый Андройд не анонсировали, но зато было много другого интересного. Мы же более подробно рассмотрим сессию, посвященную WebRTC, в которой нам даже удалось поучаствовать. Все подробности, видео и ссылки под катом.
Сессию про WebRTC вели Justin Uberti (WebRTC tech lead) и Sam Dutton, с Джастином мы знакомы уже достаточно давно — все кто входит в рабочую группу WebRTC много общаются по ряду вопросов и если хочется что-то предложить для улучшения самого стандарта или его реализации в Chrome, то всегда можно коммуницировать с Джастином напрямую или через мейллист. К слову, Google Chrome — единственный браузер где сейчас функционал WebRTC уже доступен для использования (есть еще Maxthon, но реализация там пока хромает), в Firefox 21 он пока спрятан за специальным флагом в настройках браузера, но Mozilla обещает, что уже в 22 версии все будет включено по умолчанию, примерная дата релиза FF 22 — середина июня. Можно ожидать что с середины июня более половины всех браузеров в мире (desktop версии) будут поддерживать WebRTC. Сам стандарт все еще находится в разработке, но значительная его часть уже готова и ее вполне можно использовать, что мы и делаем. Возвращаясь к сессии про WebRTC, как обычно, была вводная часть, чтобы объяснить что такое WebRTC и с чем его едят, а потом самое интересное — новые возможности, последние изменения в API, примеры сервисов, использующих стандарт.
Для всех желающих презентация доступна по адресу http://io13webrtc.appspot.com/, очень рекомендуем ознакомиться.
Есть отдельное видео сессии, в котором на 25ой минут демонстрируется звонок из WebRTC в обычную телефонную сеть на примере Zingaya. Нам было очень приятно, что ребята из Google отметили нас и нашу работу. Рабочая группа WebRTC не такая и большая, но это небольшое количество людей сейчас определяет будущее реалтайм коммуникаций на ближайшие 10 лет :)
Для тех кому лень смотреть мы выделили ключевые моменты:
- WebRTC с точки зрения Javascript это 3 API: MediaStream (+getUserMedia), RTCPeerConnection (раньше просто PeerConnection), RTCDataChannel
- Теперь для getUserMedia можно передавать constraints — позволяет задать разрешение, fps, тип данных audio/video и др.
- WebAudio API можно связать с MediaStream, чтобы обрабатывать звук, но пока WebAudio находится в разработке и скрыт за флагом в конфиге Chrome
- Эксперименты с режимом Screencapture идут достаточно успешно и скорее всего это станет частью WebRTC
- RTCDataChannel практически готов, позволяет p2p передачу данных по защищенному каналу, причем есть несколько режимов работы — как reliable так и unreliable
- Поддержка TURN, уже есть первые провайдеры STUN/TURN-серверов, совместимых с WebRTC
- Идет активная работа над Error Handling API, сейчас в Chrome уже доступна полезная штука chrome://webrtc-internals
Есть и проблемы, решение которых пока не очень понятно, например, какой видео кодек будет признан обязательным. Google и Mozilla выбрали VP8, но они отлично понимают, что на мобильных устройствах это не лучший выбор, к тому же Apple и MSFT явно не в восторге от VP8 и предпочтут сделать поддержку H.264. Пока единственным решением было бы сделать оба кодека обязательными, но H.264 не royalty free (MPEG LA отвечает за лицензирование), что может затрудить этот процесс.
Ну и на последок хорошая цитата про WebRTC:
WebRTC and HTML5 could enable the same transformation for real-time communications that the original browser did for information.
Phil Edholm
— NoJitter
Автор: aylarov