WebRTC (Web Real-Time Communications) is a technology which enables Web applications and sites to capture and optionally stream audio and/or video media, as well as to exchange arbitrary data between browsers without requiring an intermediary. The set of standards that comprises WebRTC makes it possible to share data and perform teleconferencing peer-to-peer, without requiring that the user to install plug-ins or any other third-party software.
WebRTC consists of several interrelated APIs and protocols which work together to achieve this. The documentation you'll find here will help you understand the fundamentals of WebRTC, how to set up and use both data and media connections, and more.
WebRTC concepts and usage
WebRTC serves multiple purposes, and overlaps substantially with the Media Capture and Streams API. Together, they provide powerful multimedia capabilities to the Web, including support for audio and video conferencing, file exchange, identity management, and interfacing with legacy telephone systems by sending DTMF signals. Connections between peers can be made without requiring any special drivers or plug-ins, and can often be made without any intermediary servers.
Connections between two peers are created using—and represented by—the RTCPeerConnection
interface. Once a connection has been established and opened, media streams (MediaStream
s) and/or data channels (RTCDataChannel
s) can be added to the connection.
Media streams can consist of any number of tracks of media information; tracks, which are represented by objects based on the MediaStreamTrack
interface, may contain one of a number of types of media data, including audio, video, and text (such as subtitles or even chapter names). Most streams consist of at least one audio track and likely also a video track, and can be used to send and receive both live media or stored media information (such as a streamed movie).
You can also use the connection between two peers to exchange arbitrary binary data using the RTCDataChannel
interface. This can be used for back-channel information, metadata exchange, game status packets, file transfers, or even as a primary channel for data transfer.
more details and links to relevant guides and tutorials needed
WebRTC interfaces
Because WebRTC provides interfaces that work together to accomplish a variety of tasks, we have divided up the interfaces in the list below by category. Please see the sidebar for an alphabetical list.
Connection setup and management
These interfaces are used to set up, open, and manage WebRTC connections.
RTCPeerConnection
- Represents a WebRTC connection between the local computer and a remote peer. It is used to handle efficient streaming of data between the two peers.
RTCDataChannel
- Represents a bi-directional data channel between two peers of a connection.
RTCDataChannelEvent
- Represents events that occur while attaching a
RTCDataChannel
to aRTCPeerConnection
. The only event sent with this interface isdatachannel
. RTCSessionDescription
- Represents the parameters of a session. Each
RTCSessionDescription
consists of a descriptiontype
indicating which part of the offer/answer negotiation process it describes and of the SDP descriptor of the session. RTCStatsReport
- Provides information detailing statistics for a connection or for an individual track on the connection; the report can be obtained by calling
RTCPeerConnection.getStats()
. RTCIceCandidate
- Represents a candidate internet connectivity establishment (ICE) server for establishing an
RTCPeerConnection
. RTCIceTransport
- Represents information about an internet connectivity establishment (ICE) transport.
RTCPeerConnectionIceEvent
- Represents events that occurs in relation to ICE candidates with the target, usually an
RTCPeerConnection
. Only one event is of this type:icecandidate
. RTCRtpSender
- Manages the encoding and transmission of data for a
MediaStreamTrack
on anRTCPeerConnection
. RTCRtpReceiver
- Manages the reception and decoding of data for a
MediaStreamTrack
on anRTCPeerConnection
. RTCTrackEvent
- Indicates that a new incoming
MediaStreamTrack
was created and an associatedRTCRtpReceiver
object was added to theRTCPeerConnection
object.
Identity and security
The WebRTC API includes a number of interfaces to manage security and identity.
RTCIdentityProvider
- Enables a user agent is able to request that an identity assertion be generated or validated.
RTCIdentityAssertion
- Represents the identity of the a remote peer of the current connection. If no peer has yet been set and verified this interface returns
null
. Once set it can't be changed. RTCIdentityProviderRegistrar
- Registers an identity provider (idP).
RTCIdentityEvent
- Represents an identity assertion generated by an identity provider (idP). This is usually for an
RTCPeerConnection
. The only event sent with this type isidentityresult
. RTCIdentityErrorEvent
- Represents an error associated with the identity provider (idP). This is usually for an
RTCPeerConnection
. Two events are sent with this type:idpassertionerror
andidpvalidationerror
. RTCCertificate
- Represents a certificate that an
RTCPeerConnection
uses to authenticate.
Telephony
These interfaces are related to interactivity with public-switched telephone networks (PTSNs).
RTCDTMFSender
- Manages the encoding and transmission of dual-tone multi-frequency (DTMF) signaling for an
RTCPeerConnection
. RTCDTMFToneChangeEvent
- Indicates an occurrence of a of dual-tone multi-frequency (DTMF). This event does not bubble (except where otherwise stated) and is not cancelable (except where otherwise stated).
Guides
- Introduction to WebRTC protocols
- This article introduces the protocols on top of which the WebRTC API is built.
- WebRTC connectivity
- A guide to how WebRTC connections work and how the various protocols and interfaces can be used together to build powerful communication apps.
- Lifetime of a WebRTC session
- WebRTC lets you build peer-to-peer communication of arbitrary data, audio, or video—or any combination thereof—into a browser application. In this article, we'll look at the lifetime of a WebRTC session, from establishing the connection all the way through closing the connection when it's no longer needed.
- Signaling and two-way video calling
- A tutorial and example which turbs a WebSocket-based chat system created for a previous example and adds support for opening video calls among participants. The chat server's WebSocket connection is used for WebRTC signaling.
- Using WebRTC data channels
- This guide covers how you can use a peer connection and an associated
RTCDataChannel
to exchange arbitrary data between two peers. - Using DTMF with WebRTC
- WebRTC's support for interacting with gateways that link to old-school telephone systems includes support for sending DTMF tones using the
RTCDTMFSender
interface. This guide shows how to do so.
Tutorials
- Improving compatibility using WebRTC adapter.js
- The WebRTC organization provides on GitHub the WebRTC adapter to work around compatibility issues in different browsers' WebRTC implementations. The adapter is a JavaScript shim which lets your code to be written to the specification so that it will "just work" in all browsers with WebRTC support.
- Taking still photos with WebRTC
- This article shows how to use WebRTC to access the camera on a computer or mobile phone with WebRTC support and take a photo with it.
- A simple RTCDataChannel sample
- The
RTCDataChannel
interface is a feature which lets you open a channel between two peers over which you may send and receive arbitrary data. The API is intentionally similar to the WebSocket API, so that the same programming model can be used for each.
Resources
Protocols
WebRTC-proper protocols
- Application Layer Protocol Negotiation for Web Real-Time Communications
- WebRTC Audio Codec and Processing Requirements
- RTCWeb Data Channels
- RTCWeb Data Channel Protocol
- Web Real-Time Communication (WebRTC): Media Transport and Use of RTP
- WebRTC Security Architecture
- Transports for RTCWEB
Related supporting protocols
- Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocol
- Session Traversal Utilities for NAT (STUN)
- URI Scheme for the Session Traversal Utilities for NAT (STUN) Protocol
- Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers
- An Offer/Answer Model with Session Description Protocol (SDP)
- Session Traversal Utilities for NAT (STUN) Extension for Third Party Authorization
Specifications
Specification | Status | Comment |
---|---|---|
WebRTC 1.0: Real-time Communication Between Browsers | Working Draft | The initial definition of the API of WebRTC. |
Media Capture and Streams | Editor's Draft | The initial definition of the object conveying the stream of media content. |
Media Capture from DOM Elements | Editor's Draft | The initial definition on how to obtain stream of content from DOM Elements |
In additions to these specifications defining the API needed to use WebRTC, there are several protocols, listed under resources.