WebRTC
//= $_SERVER['SERVER_NAME'] ?> Источник мультимедийных данныхПолучение доступа к изображению с камеры
//= $_SERVER['SERVER_NAME'] ?> Изучение интерфейса RTCPeerConnection
Web Real-Time Communication (WebRTC) - это новый стандарт, который позволяет браузерам общаться в реальном времени используя одноранговую (peer-to-peer) архитектуру . Речь идет о безопасной, согласованной, с передачей аудио / видео (и данных) одноранговой связи между браузерами поддерживающими HTML5. Это безусловно эволюция в мире веб-приложений, после применения которой веб-разработчики могут разрабатывать мультимедийные приложения реального времени без необходимости использования проприетарных плагинов типа Adobe Flash.
Стек WebRTC
Протоколы
SDPRFC 4566 (устаревший RFC 3266)
Используется для описания сеансов передачи мультимедийных данных для таких целей как объявление сеанса, приглашение к сеансу и другим формам инициации сеанса передачи мультимедийных данных.
JSEP (JavaScript Session Establishment Protocol)
Internet-Draft
ICE (Interactive Connectivity Establishment)
RFC 8445 (устаревший RFC 5245)
Этот документ описывает протокол для прохождения NAT (Network Address Translator) для коммуникаций использующих UDP. ICE использует протокол STUN (Session Traversal Utilities for NAT) и его расширение TURN (Traversal Using Relay NAT).
STUN (Session Traversal Utilities for NAT)
RFC 5389
TURN (Traversal Using Relays around NAT)
RFC 5766
RTP (Real-time Transport Protocol)
RFC 3550
SRTP (Secure Real-time Transport Protocol)
RFC 3711
SCTP (Stream Control Transmission Protocol)
RFC 4960
Это надежный транспортный протокол, который обеспечивает стабильную, упорядоченную (с сохранением порядка следования пакетов) передачу данных между двумя конечными точками (подобно TCP). Кроме того, протокол обеспечивает сохранение границ отдельных сообщений (подобно UDP). Однако в отличие от протоколов TCP и UDP протокол SCTP имеет дополнительные преимущества, такие как поддержка множественной адресации (multihoming) и многопоточности (multi-streaming) - каждая из этих возможностей увеличивает доступность узла передачи данных.
RTCP (Real-time Transport Control Protocol )
RFC 3550
WebSocket
RFC 6455
(YouTube) Realtime PHP Using Websockets - Jeff Kolesnikowicz @jkolez
PHP Ratchet
JavaScript Node.js + ws|websocket
DTLS Datagram Transport Layer Security)
RFC 6347
W3C WebRTC 1.0: Real-time Communication Between Browsers
W3C Editor's Draft 15 November 2018
W3C Media Capture and Streams API
W3C Editor's Draft 08 November 2018
Known Issues and Best Practices for the Use of Long Polling and Streaming in Bidirectional HTTP
RFC 6202
Screen Capture
W3C Editor's Draft 15 November 2018
Screen Capture on Chrome
Кодеки
Аудио - Opus (RFC 6716) и G.711Видео - IETF пока не определились. Согласовывается браузерами.
Сигнальные серверы (используется Websocket)
PHP (Ratchet) Толковое описание на YouTubeJavaScript (Node.js)
Книги
Getting started with WebRTCReal-time communication with WebRTC
WebRTC cookbook
WebRTC integrator's guide
WebRTC. The web way to communicate