Spec-Zone.ru › Web APIs

API WebRTC

WebRTC (Веб-реальная передача данных) — технология, которая позволяет веб-приложениям и сайтам захватывать и (по желанию) передавать аудио и/или видеопоток, а также обмениваться произвольными данными между браузерами без необходимости посредника. Набор стандартов, составляющих WebRTC, позволяет обмениваться данными и проводить видеоконференции по принципу «точка-точка» без необходимости установки плагинов или другого стороннего программного обеспечения.

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

Концепции и использование WebRTC

WebRTC служит для множества целей; вместе с API захвата медиа и потоков они предоставляют мощные мультимедийные возможности для Веба, включая поддержку аудио- и видеоконференций, обмена файлами, совместного доступа к экрану, управления идентификацией и взаимодействия с устаревшими телефонными системами, включая поддержку отправки DTMF (сигналы набора тонального набора). Подключения между участниками могут устанавливаться без необходимости специальных драйверов или плагинов и часто могут устанавливаться без участия промежуточных серверов.

Подключения между двумя участниками представлены интерфейсом RTCPeerConnection. После установления и открытия подключения с помощью RTCPeerConnection, к подключению могут быть добавлены медиапотоки (MediaStream) и/или каналы данных (RTCDataChannel).

Медиапотоки могут состоять из любого количества потоков медиаинформации; потоки, которые представлены объектами на основе интерфейса MediaStreamTrack, могут содержать один из нескольких типов медиаданных, включая аудио, видео и текст (например, субтитры или даже названия глав). Большинство потоков состоят как минимум из одного аудиопотока и, вероятно, также видеопотока и могут использоваться для отправки и получения как живого медиа, так и сохранённой медиаинформации (например, потокового фильма).

Вы также можете использовать подключение между двумя участниками для обмена произвольными двоичными данными, используя интерфейс RTCDataChannel. Это может быть использовано для каналов обратной связи, обмена метаданными, пакетов состояния игры, передачи файлов или даже в качестве основного канала для передачи данных.

Совместимость

WebRTC в целом хорошо поддерживается современными браузерами, но некоторые несовместимости остаются. Библиотека adapter.js — это обходной механизм для изоляции приложений от этих несовместимостей.

Справочник WebRTC

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

Настройка и управление подключением

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

Интерфейсы

RTCPeerConnection

Представляет соединение WebRTC между локальным компьютером и удалённым партнёром. Используется для обработки эффективной потоковой передачи данных между двумя партнёрами.

RTCDataChannel

Представляет двунаправленный канал данных между двумя партнёрами соединения.

RTCDataChannelEvent

Представляет события, происходящие при подключении RTCDataChannel к RTCPeerConnection. Единственным событием, отправленным с помощью этого интерфейса, является datachannel.

RTCSessionDescription

Представляет параметры сессии. Каждый RTCSessionDescription состоит из описания type, указывающего на ту часть процесса переговоров offer/answer, которую он описывает, и описателя сессии SDP.

RTCStatsReport

Предоставляет подробную статистическую информацию для соединения или для отдельного тракта в соединении; отчёт можно получить, вызвав RTCPeerConnection.getStats().

RTCIceCandidate

Представляет кандидата сервера Interactive Connectivity Establishment (ICE) для установления RTCPeerConnection.

RTCIceTransport

Представляет информацию об ICE-транспорте.

RTCPeerConnectionIceEvent

Представляет события, связанные с ICE-кандидатами с целевым объектом, обычно RTCPeerConnection. Только одно событие такого типа: icecandidate.

RTCRtpSender

Управляет кодированием и передачей данных для MediaStreamTrack в RTCPeerConnection.

RTCRtpReceiver

Управляет приёмом и декодированием данных для MediaStreamTrack в RTCPeerConnection.

RTCTrackEvent

Интерфейс, используемый для представления события track, которое указывает на добавление объекта RTCRtpReceiver к объекту RTCPeerConnection, указывая на создание и добавление нового входящего MediaStreamTrack к RTCPeerConnection.

RTCSctpTransport

Предоставляет информацию, описывающую транспортный протокол Stream Control Transmission Protocol (SCTP), а также способ доступа к базовому транспорту Datagram Transport Layer Security (DTLS), по которому отправляются и принимаются SCTP-пакеты для всех каналов данных RTCPeerConnection.

События

bufferedamountlow

Объем данных, в настоящее время буферизуемых каналом данных (как указано его свойством bufferedAmount), уменьшился до значения, равного или ниже минимального размера буферизованных данных канала, указанного в bufferedAmountLowThreshold.

close

Канал данных завершил процесс закрытия и теперь находится в состоянии closed. В этот момент его базовый транспорт данных полностью закрыт. Вы можете получить уведомление *до* завершения закрытия, наблюдая за событием closing вместо этого.

closing

RTCDataChannel перешёл в состояние closing, что означает, что он будет закрыт вскоре. Вы можете определить завершение процесса закрытия, наблюдая за событием close.

connectionstatechange

Изменилось состояние соединения, к которому можно получить доступ через connectionState.

datachannel

Новый RTCDataChannel доступен после того, как удалённый партнёр открыл новый канал данных. Тип этого события — RTCDataChannelEvent.

error

RTCErrorEvent указывает, что произошла ошибка в канале данных.

error

RTCErrorEvent указывает, что произошла ошибка в RTCDtlsTransport. Эта ошибка будет либо dtls-failure, либо fingerprint-failure.

gatheringstatechange

Изменилось состояние сбора RTCIceTransport.

icecandidate

RTCPeerConnectionIceEvent, которое отправляется всякий раз, когда локальное устройство идентифицирует новый ICE-кандидат, который необходимо добавить к локальному партнёру, вызвав setLocalDescription().

icecandidateerror

RTCPeerConnectionIceErrorEvent указывает, что произошла ошибка при сборе ICE-кандидатов.

iceconnectionstatechange

Отправляется в RTCPeerConnection, когда изменяется состояние ICE-соединения, находящееся в свойстве iceConnectionState.

icegatheringstatechange

Отправляется в RTCPeerConnection, когда изменяется состояние сбора ICE, находящееся в свойстве iceGatheringState.

message

По каналу данных получено сообщение. Тип события — MessageEvent.

negotiationneeded

Уведомляет RTCPeerConnection, что необходимо выполнить переговор сессии, вызвав createOffer(), за которым следует setLocalDescription().

open

Базовый транспорт данных для RTCDataChannel был успешно открыт или повторно открыт.

selectedcandidatepairchange

Изменилась текущая пара выбранных ICE-кандидатов для RTCIceTransport, на котором было вызвано событие.

track

Событие track, типа RTCTrackEvent, отправляется в RTCPeerConnection, когда новый трек добавляется к соединению после успешной настройки потоковой передачи медиа.

signalingstatechange

Отправляется в соединение партнёров, когда изменилось его signalingState. Это происходит в результате вызова setLocalDescription() или setRemoteDescription().

statechange

Изменилось состояние RTCDtlsTransport.

statechange

Изменилось состояние RTCIceTransport.

statechange

Изменилось состояние RTCSctpTransport.

rtctransform

Кодированный видео- или аудиокадр готов к обработке с помощью потока преобразования в рабочем процессе.

Типы

RTCSctpTransport.state

Указывает состояние экземпляра RTCSctpTransport.

Идентификация и безопасность

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

RTCIdentityProvider

Позволяет агенту пользователя запросить генерацию или валидацию утверждения об идентификации.

RTCIdentityAssertion

Представляет идентификацию удалённого участника текущего подключения. Если участник ещё не задан и не проверен, этот интерфейс возвращает null. После задания он не может быть изменён.

RTCIdentityProviderRegistrar

Регистрирует поставщика идентификации (idP).

RTCCertificate

Представляет сертификат, который использует RTCPeerConnection для аутентификации.

Телефония

Эти интерфейсы и события связаны с взаимодействием с общедоступными коммутируемыми телефонными сетями (PSTN). Они в основном используются для отправки звуков тонального набора — или пакетов, представляющих эти тона, — по сети удалённому участнику.

Интерфейсы

RTCDTMFSender

Управляет кодированием и передачей сигналов двойного тона многочастотного сигналинга (DTMF) для RTCPeerConnection.

RTCDTMFToneChangeEvent

Используется событием tonechange для указания того, что тон DTMF либо начался, либо закончился. Это событие не распространяется (за исключением случаев, где это указано отдельно) и не может быть отменено (за исключением случаев, где это указано отдельно).

События

tonechange

Начинается воспроизведение нового тона DTMF по подключению или последний тон в буфере тонов toneBuffer отправлен, и буфер теперь пуст. Тип события — RTCDTMFToneChangeEvent.

Кодированные преобразования

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

Интерфейсы

RTCRtpScriptTransform

Интерфейс для вставки потока преобразования(ий), работающего(их) в рабочем потоке, в конвейер RTC.

RTCRtpScriptTransformer

Рабочая сторона интерфейса RTCRtpScriptTransform, которая передает параметры с основного потока, а также потоки чтения и записи, которые могут быть использованы для передачи кодированных кадров через TransformStream.

RTCEncodedVideoFrame

Представляет закодированный видеокадр, который должен быть преобразован в конвейере RTC.

RTCEncodedAudioFrame

Представляет закодированный аудиокадр, который должен быть преобразован в конвейере RTC.

Свойства

RTCRtpReceiver.transform

Свойство, используемое для вставки потока преобразования в конвейер приёмника для входящих закодированных видео- и аудиокадров.

RTCRtpSender.transform

Свойство, используемое для вставки потока преобразования в конвейер отправителя для исходящих закодированных видео- и аудиокадров.

События

rtctransform

Преобразование RTC готово к запуску в рабочем потоке или закодированный видео- или аудиокадр готов к обработке.

Руководства

Введение в протоколы WebRTC

В этой статье представлены протоколы, на основе которых построен API WebRTC.

Подключение WebRTC

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

Жизненный цикл сессии WebRTC

WebRTC позволяет создавать приложения для браузера, осуществляющие обмен данными, аудио или видео (или любой комбинацией) между равными. В этой статье мы рассмотрим жизненный цикл сессии WebRTC, от установления соединения до его закрытия, когда оно больше не требуется.

Установление соединения: идеальная схема переговоров

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

Сигнализация и двухсторонняя видеосвязь

Учебное пособие и пример, которые преобразуют систему чата на основе WebSocket, созданную для предыдущего примера, и добавляют поддержку открытия видеозвонков между участниками. Подключение WebSocket сервера чата используется для сигнализации WebRTC.

Кодеки, используемые в WebRTC

Руководство по кодекам, которые браузеры должны поддерживать, а также по дополнительным кодекам, поддерживаемым различными популярными браузерами. Включает руководство для выбора лучших кодеков для ваших потребностей.

Использование каналов данных WebRTC

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

Использование DTMF с WebRTC

Поддержка WebRTC для взаимодействия с шлюзами, которые подключаются к старым телефонным системам, включает поддержку отправки тонов DTMF с помощью интерфейса RTCDTMFSender. Это руководство показывает, как это сделать.

Использование кодированных преобразований WebRTC

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

Учебники

Улучшение совместимости с помощью WebRTC adapter.js

Организация WebRTC предоставляет на GitHub адаптер WebRTC для решения проблем совместимости в различных реализациях WebRTC в разных браузерах. Адаптер — это JavaScript-заглушка, которая позволяет писать код по спецификации таким образом, чтобы он работал во всех браузерах, поддерживающих WebRTC.

Простой пример RTCDataChannel

Интерфейс RTCDataChannel — это функция, которая позволяет открыть канал между двумя равными, по которому вы можете отправлять и получать произвольные данные. API умышленно похож на API WebSocket API, чтобы можно было использовать одну и ту же модель программирования для каждого.

Создание подключённого к интернету телефона с помощью Peer.js

Этот учебник — пошаговое руководство по созданию телефона с помощью Peer.js

Спецификации

Спецификация
WebRTC: реальное общение в браузерах
Захват медиа и потоки
Захват медиа из элементов DOM

Протоколы WebRTC

  • Переговоры о протоколах прикладного уровня для WebRTC
  • Требования к кодеку и обработке аудио WebRTC
  • Каналы данных RTCWeb
  • Протокол каналов данных RTCWeb
  • Web Real-Time Communication (WebRTC): транспорт медиа и использование RTP
  • Архитектура безопасности WebRTC
  • Транспортные средства для RTCWEB

Дополнительные поддерживающие протоколы

  • Установление интерактивного соединения (ICE): протокол для прохождения через NAT для протокола предложение/ответ
  • Служебные утилиты для прохождения NAT (STUN)
  • Схема URI для протокола STUN
  • Прохождение через посредников NAT (TURN) URI
  • Модель предложение/ответ с протоколом описания сеанса (SDP)
  • Расширение STUN для авторизации третьих сторон

См. также

  • MediaDevices
  • MediaStreamEvent
  • MediaStreamTrack
  • MessageEvent
  • MediaStream
  • API захвата и потоков медиа
  • Firefox многопотоковая передача и переподключение для Jitsi Videobridge
  • Проникновение сквозь туман WebRTC с помощью SocketPeer
  • Внутри автобуса вечеринки: создание веб-приложения с несколькими потоками живого видео + интерактивной графикой
  • Веб-технологии медиа

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API