1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Tinywan-WebRTC-tutorial

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Практические занятия и демонстрации по WebRTC

  • Необходимо наличие камеры (по умолчанию поддерживается на ноутбуках и мобильных устройствах).

Поддерживаемые браузеры и платформы

Chrome Firefox Opera Safari Android iOS
Latest ✔ Latest ✔ Latest ✔ 11+ ✔ Latest ✔ 11+ ✔

WebRTC — это технология для обеспечения связи в реальном времени, которая позволяет сетевым приложениям или сайтам устанавливать прямые соединения между браузерами без использования промежуточных посредников. С помощью WebRTC можно передавать видеопотоки и аудиопотоки или другие данные без необходимости установки дополнительных плагинов или программного обеспечения.

Это не единый протокол, а набор стандартов, включающий в себя протоколы для работы с мультимедиа, шифрования и передачи данных, а также JavaScript API, который упрощает создание приложений для обмена данными и проведения телефонных конференций.

Благодаря простоте использования JavaScript API, WebRTC позволяет браузерам обмениваться данными напрямую, без установки дополнительного ПО. Кроме того, WebRTC поддерживает гибкие механизмы сигнализации, которые позволяют легко интегрировать его с существующими системами SIP и телефонными сетями.

Внутренняя структура WebRTC

Архитектура WebRTC включает в себя три модуля: Voice Engine, Video Engine и Transport.

Voice Engine содержит следующие компоненты:

  • iSAC/iLBC Codec — для обработки звука в широком и узком диапазоне частот;
  • NetEQ for voice — для устранения проблем с задержкой и потерей пакетов при передаче голоса;
  • Echo Canceler/Noise Reduction — для подавления эха и шума.

Video Engine включает:

  • VP8 Codec — для кодирования и декодирования видео;
  • Video jitter buffer — для компенсации задержки и потери пакетов при передаче видео;
  • Image enhancements — для улучшения качества изображения.

Transport отвечает за:

  • SRTP — безопасный протокол передачи данных для аудио- и видеопотоков;
  • Multiplexing — для объединения нескольких потоков данных в один;
  • P2P, STUN+TURN+ICE — для обхода NAT и брандмауэров. Кроме того, для безопасной передачи данных может использоваться DTLS (Data Transport Layer Security), который применяется для шифрования передачи и согласования ключей.

Основные компоненты WebRTC

  • Аудио- и видеодвижок: OPUS, VP8 / VP9, H264.

  • Протокол транспортного уровня: на нижнем уровне используется протокол UDP.

  • Медиапротокол: SRTP / SRTCP.

  • Протоколы передачи данных: DTLS / SCTP.

  • P2P-проникновение через внутреннюю сеть: STUN / TURN / ICE / Trickle ICE.

  • Сигнализация и согласование SDP: HTTP / WebSocket / SIP, Offer Answer.

Аудио- и видеодвижки WebRTC

В основе всего лежат аппаратные устройства, над которыми находятся модули захвата аудио и видео.

Над ними расположен аудио- и видеодвижок. Аудиодвижок отвечает за сбор и передачу звука, а также за шумоподавление и подавление эха. Видеодвижок оптимизирует передачу видео по сети и кодирование-декодирование при передаче через интернет.

На вершине находится набор C++ API, а над ним — JavaScript API для браузеров.

Стек протоколов WebRTC

Все основные протоколы WebRTC построены на базе UDP.

ICE, STUN и TURN используются для проникновения через внутренние сети, они помогают получить и связать внешний сетевой адрес, а также поддерживают механизм keep alive.

DTLS используется для шифрования передаваемых данных. Это версия TLS для UDP, которая необходима для обеспечения безопасности в WebRTC. Все компоненты WebRTC должны быть зашифрованы, а JavaScript API можно использовать только с безопасными источниками (HTTPS или локальный хост).

SRTP и SRTCP — это протоколы для упаковки и передачи медиаданных.

SCTP — это протокол управления потоками, который обеспечивает характеристики, подобные TCP. В WebRTC он строится поверх DTLS.

RTCPeerConnection используется для создания и поддержания соединения между конечными точками и обеспечивает эффективную передачу аудио- и видеотрансляций.

RTCDataChannel позволяет передавать произвольные двоичные данные между конечными точками.

Объяснение стека протоколов WebRTC:

  • ICE: Interactive Connectivity Establishment (RFC 5245).
  • STUN: Session Traversal Utilities for NAT (RFC 5389).
  • TURN: Traversal Using Relays around NAT (RFC 5766).
  • SDP: Session Description Protocol (RFC 4566).
  • DTLS: Datagram Transport Layer Security (RFC 6347).
  • SCTP: Stream Control Transmission Protocol (RFC 4960).
  • SRTP: Secure Real-time Transport Protocol (RFC 3711).

JavaScript API

  • getUserMedia() — захват аудио и видео.
  • RTCPeerConnection — передача аудио и видео между пользователями.
  • RTCDataChannel — обмен данными между пользователями.
  • MediaRecorder — запись аудио и видео.

Учебники по интерфейсам

Исходный код и примеры

Ссылки

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Tinywan-WebRTC-tutorial.git
git@api.gitlife.ru:oschina-mirror/Tinywan-WebRTC-tutorial.git
oschina-mirror
Tinywan-WebRTC-tutorial
Tinywan-WebRTC-tutorial
master