WebRTC(Web实时通讯)是一种技术,使Web应用程序和网站来捕捉和可选的音频和/或视频流媒体,以及交换任意数据之间的浏览器不须要中介。该系列标准包括WebRTC可以共享数据和执行会议的对等,而不须要用户安装插件或任何其余第三方软件。html
WebRTC由几个相互关联的应用程序接口和协议共同来实现。你会发现这里将帮助你理解WebRTC的基础,如何设置和使用数据和媒体的链接、更多。git
接口github
表示本地计算机和远程节点之间的链接的WebRTC。它是用来处理两个对等体之间的高效的数据流web
表示会话的参数。每一个 rtcsessiondescription 由描述 型 指示提供/应答谈判过程的描述和对 SDP 描述符的会议的一部分。浏览器
3.RTCIceCandidate服务器
表明候选人的网络链接创建(ice)创建一个 rtcpeerconnection服务器。网络
4.RTCIceTransportsession
表明一个 互联网链接创建信息(ice)运输。app
5.RTCPeerConnectionIceEventless
表示与目标对象有关的事件发生的事件,一般一个rtcpeerconnection。只有一个事件是这种类型:icecandidate。
6.RTCRtpSender
Manages the encoding and transmission of data through a MediaStreamTrack 对于 RtcPeerConnection
7.RTCRtpReceiver
负责接收和解码的数据经过一个 rtcpeerconnection 对于 mediastreamtrack。
Indicates that a new incoming MediaStreamTrack
was created and an associated RTCRtpReceiver
object was added to the RTCPeerConnection
object.
Represents a certificate that an RTCPeerConnection
uses to authenticate.
Represents a bi-directional data channel between two peers of a connection.
Represents events that occur while attaching a RTCDataChannel
to a RTCPeerConnection
. The only event sent with this interface is datachannel
.
Manages the encoding and transmission of dual-tone multi-frequency (DTMF) signaling for an RTCPeerConnection
.
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).
Reports stats for a given MediaStreamTrack
asynchronously.
Registers an identity provider (idP).
Enables a user agent is able to request that an identity assertion be generated or validated.
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
Represents an identity assertion generated by an identity provider (idP). This is usually for an RTCPeerConnection
. The only event sent with this type is identityresult
.
Represents an error associated with the identity provider (idP). This is usually for an RTCPeerConnection
. Two events are sent with this type: idpassertionerror
and idpvalidationerror
.
Beneath the APIs that developers use to create and use WebRTC connections lie a number of network protocols and connectivity standards. This brief overview covers these standards.
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.
WebRTC consists of several interrelated APIs and protocols which work together to support the exchange of data and media between two or more peers. This article provides a brief overview of each of these APIs and what purpose it serves.
This article takes you through the creation of a cross-browser RTC App. By the end of it, you should have working peer-to-peer data channel and media channel.
This article introduces the protocols on top of which the WebRTC API is built.
This guide covers how you can use a peer connection and an associated RTCDataChannel
to exchange arbitrary data between two peers.
This article describes how the various WebRTC-related protocols interact with one another in order to create a connection and transfer data and/or media among peers.
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.
Signaling and two-way video calling
Sample, we take the web socket chat system we've created in another example and add the ability to make video calls. The chat server is augmented to handle the WebRTC signaling.
Specification | Status | Comment |
---|---|---|
WebRTC 1.0: Real-time Communication Between Browser | 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.
MediaDevices
MediaStreamEvent
MediaStreamConstraints
MediaStreamTrack
MessageEvent
MediaStream
Session Description Protocol (SDP) is a standard for describing the multimedia content of the connection such as resolution, formats, codecs, encryption, etc. so that both peers can understand each other once the data is transferring. This is, in essence, the metadata describing the content and not the media content itself.
The offer/answer process is performed both when a call is first established, but also any time the call's format or other configuration needs to change. Regardless of whether it's a new call, or reconfiguring an existing one, these are the basic steps which must occur to exchange the offer and answer, leaving out the ICE layer for the moment:
RTCPeerConnection.createOffer()
to create an offer.RTCPeerConnection.setLocalDescription()
to set that offer as the local description (that is, the description of the local end of the connection).RTCPeerConnection.setRemoteDescription()
to record it as the remote description (the description of the other end of the connection).RTCPeerConnection.createAnswer()
.RTCPeerConnection.setLocalDescription()
to set the answer as its local description. The recipient now knows the configuration of both ends of the connection.RTCPeerConnection.setRemoteDescription()
to set the answer as the remote description for its end of the call. It now knows the configuration of both peers. Media begins to flow as configured.