Компания Google открыла под лицензией BSD код проекта WebRTC, в рамках которого подготовлен простой JavaScript API для расширения возможностей web-браузеров средствами коммуникации в реальном режиме времени (Real-Time Communications - RTC). Изначально WebRTC был разработан в недрах вошедшей в состав Google компании GIPS, специализирующейся на разработке технологий цифровой обработки сигналов. Кроме открытия кода, Google заявила о снятии каких-либо патентных ограничений - все связанные с WebRTC патенты можно использовать безвозмездно.
С практической точки зрения WebRTC может быть использован для создания принципиально новой категории web-приложений, способных обрабатывать голосовой и видео трафик в реальном режиме времени, например, можно организовать работу аудио конференции или создать видео-чат, без задействования сторонних проприетарных технологий и внешних плагинов, с использованием только HTML и JavaScript. В настоящее время Google активно работает с проектами Opera и Mozilla над вопросом интеграции WebRTC в состав различных web-браузеров. Одновременно инициирован процесс продвижения WebRTC в качестве промышленных и web-стандартов, для чего уже проводится соответствующая работа в рабочих группах организаций IETF и W3C. В будущем поддержку WebRTC планируется интегрировать в сервис Google Talk и платформу Android.
Интегрируемое в браузер ядро WebRTC состоит из четырех базовых компонентов: системы управления пользовательскими сессиями на базе libjingle, движка для обработки звука, движка для обработки видео и транспортного уровня. Доступ web-приложений ко всем вышеупомянутым подсистемам производится через специально подготовленный JavaScript API. Движок обработки звука базируется на использовании открытых аудиокодеков iLBC и iSAC, системы нормализации голоса NetEQ (динамическая буферизация, коррекция ошибок и возможность работы в условиях большой потери пакетов), фильтров подавления эхо и борьбы с шумами. Движок обработки видео использует для передачи данных свободный кодек VP8 и код для автоматического устранения шумов при получении картинки с web-камеры. Для передачи данных в реальном времени используется протокол SRTP (Secure Real-time Transport Protocol) в сочетании с технологиями организации P2P-каналов связи и обеспечения работы через межсетевые экраны и трансляторы адресов (технологии ICE, STUN, TURN, RTP-over-TCP и возможность работы через прокси).
Процесс организации работы приложения на базе WebRTC можно представить в виде нескольких стадий:
- Получение мультимедийного потока (виде, звук) из локально подключенного устройства (web-камера, микрофон, видеокамера) или из подготовленного пользователем файла;
- Организация локальной записи подобных потоков;
- Организация прямого соединения с другими пользователями (пирами), используя способы обхода NAT;
- Отправка локально сформированного потока к удаленным пирам и прием потоков от них;
- Отображения принятых от пиров потоков и локально генерируемого потока;
- Отправка произвольных данных удаленным пирам.