Видеозвонки: технологии реализации, кастомизация Сербул Александр Руководитель направления контроля качества интеграции и внедрений 1С-Битрикс
Стандарты - стандарт W3C Working Draft 21 August реализация (компании Google, Mozilla, Opera) Chrome - Stable (27) Firefox – Betа, частичная webrtc4all – для остальных
Кодеки HTML5 конкуренты формату H.264 WebM: VP8/Vorbis/Matroska WebRTC: VP8/(Opus, iSAC, iLBC) На днях стабилизировался: VP9/Opus - ожидается внедрение на YouTube
Media Capture and Streams – структура браузерного API W3C Working Draft 16 May 2013
Media Capture and Streams – структура браузерного API Работа с тегами Video, объектами Canvas, MediaStream, MediaStreamTrack
WebRTC – структура API «Real-time Communication Between Browsers» RTCPeerConnection – видео-аудио связь между браузерами RTCDataChannel – передача данных в обе стороны RTCStatsReport - статистика
WebRTC – пример Самый маленький пример WebRTC без кода сигналинга Сигналинг – на стороне Битрикс.
Стек WebRTC
ICE – «как найти друг друга» «Interactive Connectivity Establishment (ICE)» rfc5245, PROPOSED STANDARD, 2010 Браузеры «находят» друг друга, используя технологии STUN/TURN. Видео-аудио передается по протоколу SRTP (UDP).
STUN, TURN «Session Traversal Utilities for NAT (STUN)» rfc5245, PROPOSED STANDARD, 2008 «Traversal Using Relays around NAT (TURN)» rfc5766, PROPOSED STANDARD, 2010 Сначала NAT изобрели, потом начали «обходить»
Взаимодействие браузеров
Cтатусы peer Браузеры обмениваются описанием локальных потоков (streams) и портов через SDP v=0 o=jdoe IN IP s=SDP Seminar i=A Seminar on the session description protocol u= (Jane Doe) c=IN IP /127 t= a=recvonly m=audio RTP/AVP 0 m=video RTP/AVP 99 a=rtpmap:99 h /90000
Cтатусы ICE Соединение установлено, когда «состыкованы» все медиа-потоки.
Сигналинг Браузеры передают описание сессии друг другу - SDP «An Offer/Answer Model with the Session Description Protocol (SDP)» rfc3264, PROPOSED STANDARD, 2002 Сигналинг реализован внутри модуля Битрикс/КП
Преодоление NAT
Софт для TURN/STUN restund (BSD license) TurnServer (GNU GPL) rfc5766-turn-server (New BSD) Licode – пример открытого MCU для видео- конференций по WebRTC
Видео-кластер Битрикс turn.calls.bitrix24.com – поддержка любых видов NAT (STUN, TURN) STUN/TURN-сервер внутри «1С-Битрикс: Виртуальная машина» - в планах
Спасибо за внимание! Вопросы? Александр