翻译自:WebRTC API MDN web docs
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。
WebRTC包含了若干相互关联的API和协议以达到这个目标。你在这里看到的文档将会帮助你理解WebRTC的基本概念,还会教你如何去建立和使用可以传输媒体数据和其他任意数据的连接。当然你还会学到更多其他的东西。
因为WebRTC的实现现在仍在不断的更新,并且每个浏览器都对于编解码和WebRTC的特性有不同程度的支持,所以你需要在写代码之前严谨的考虑使用Google提供的Adapter.js库。
Adapter.js使用填充程序和polyfill来平滑WebRTC实现在支持它的环境之间的差异。Adapter.js也使用了一些前缀或者不同的命名差异,使得WebRTC开发过程更加轻松,并获得了更好的兼容性。这个库也可以作为一个NPM软件包提供。
如果要了解更多关于Adapter.js的内容,请见Improving compatibility using WebRTC adapter.js。
WebRTC可以为多个目的提供服务;多媒体流与抓取的API集合,能提供强大的Web端多媒体能力,包括音视频会议、交换文件、共享屏幕、身份管理,也提供与传统电话系统的接入,包括支持发送DTMF(按键拨号)信号。点对点的链接可以在不介入其他特殊设备或者插件的情况下完成,并且不借助任何中间服务。
点对点链接通过RTCPeerConnection
接口表现出来。一旦连接被建立,并且打开并使用RTCPeerConnection,媒体流(MediaStream
s)或者数据通道(RTCDataChannel
s)可以被加入到连接中。
流媒体中可以包括任意数量的媒体信息轨到;轨到描述了一个基于MediaStreamTrack
接口的对象,可以包含多种类型媒体数据类型之一,包括音频、视频、文本(例如标题甚至章节名称)。大多数的流包括至少一个音频轨到,也可能包括视频轨到,以此用来接收和发送直播数据以及存储的媒体信息(例如流电影)。
你也可以使用点对点连接,通过RTCDataChannel
接口去交换任意的二进制数据。这可以用于反向通道信息,元数据交换、游戏状态数据包、文件传输,甚至作为数据传输的主要通道。
更多详细信息以及所需的相关指南和教程的链接。
因为WebRTC提供了能够共同完成不同任务的接口,因此我们在下面的列表中按照类别进行了花粉。请看侧栏以获取字典序列表。
这类接口用于设置、打开以及管理WebRTC连接。包括表示点媒体连接、数据信道的接口,以及在交换有关每一端功能信息时使用的接口,以便为双向媒体连接选择最佳配置。
RTCPeerConnection
表示一条本地计算机与远端建立的WebRTC连接。用于处理端到端高效的数据流。
RTCDataChannel
表示端到端连接之间的双向数据通道。
RTCDataChannelEvent
表示将RTCDataChannel附加于RTCPeerConnection时发生的事件。通过此解扣子发送的唯一事件是datachannel。
RTCSessionDescription
表示会话的参数。每一个RTCSessionDescription包含一个描述类型,该类型指示它所描述的是offer/answer协商过程的那一部分,以及SDP描述符。
RTCSessionDescriptionCallback
RTCSessionDescriptionCallback是当请求创建一个offer或者answer时传递给RTCPeerConnection
对象。
RTCStatsReport
提供详细说明一个连接或者连接的一个独立轨道的统计数据;这个数据可以通过RTCPeerConnection.getStats()
获得。
RTCIceCandidate
表示用于建立RTCPeerConnection
的候选互联网交互建立服务(ICE)。
RTCIceTransport
表示一个ICE传输的信息。
RTCIceServer
定义如何连接单个ICE服务(例如STUN或者TURN服务)。
RTCPeerConnectionIceEvent
表示与具有目标(通常为RTCPeerConnection
)的ICE候选者有关的事件。 这种事件类型只有一个:icecandidate。
RTCRtpSender
管理RTCPeerConnection
上MediaStreamTrack
的数据编码和传输。
RTCRtpReceiver
管理RTCPeerConnection
上MediaStreamTrack
的数据接收和解码。
RTCRtpContributingSource
包含有关给定贡献源(CSRC)的信息,包括该源贡献的数据包最近播放的时间。
RTCTrackEvent
用于表示track
事件的接口,该接口指示RTCRtpReceiver
对象已添加到RTCPeerConnection
对象,指示已创建新的传入MediaStreamTrack
并将其添加到RTCPeerConnection。
RTCConfiguration
用于提供RTCPeerConnection
的配置选项。
RTCSctpTransport
提供描述流控制传输协议(SCT)传输的信息,还提供一种访问基础数据报传输层安全性(DTLS)传输的方式,通过该传输和接收RTCPeerConnection
的所有数据通道的SCTP数据包。
RTCSctpTransportState
指示RTCSctpTransport
实例的状态。
WebRTC API包含许多用于管理安全性和身份的接口。
RTCIdentityProvider
使用户代理能够请求生成或验证身份声明。
RTCIdentityAssertion
表示当前连接的远程对等方的标识。 如果尚未设置和验证任何对等方,则此接口返回null。 设置后将无法更改。
RTCIdentityEvent
表示由身份提供者(idP)生成的身份声明。 这通常用于RTCPeerConnection。 用这种类型发送的唯一事件是identityresult。
RTCIdentityErrorEvent
表示与身份提供者(idP)相关的错误。 这通常用于RTCPeerConnection。 使用此类型发送两个事件:idpassertionerror和idpvalidationerror。
RTCCertificate
表示RTCPeerConnection用于认证的证书。
这些接口与与公用交换电话网(PTSN)的交互性有关。
RTCDTMFSender
管理RTCPeerConnection的双音多频(DTMF)信令的编码和传输。
RTCDTMFToneChangeEvent
音调变化事件用于指示DTMF音调已经开始或结束。 此事件不会冒泡(除非另有说明),并且不可取消(除非另有说明)。
Introduction to WebRTC protocols
本文介绍了基于WebRTC API构建的协议。
WebRTC connectivity
WebRTC连接如何工作以及如何将各种协议和接口一起使用以构建功能强大的通信应用程序的指南。
Lifetime of a WebRTC session
WebRTC使您可以将任意数据,音频或视频(或其任意组合)的对等通信构建到浏览器应用程序中。 在本文中,我们将研究WebRTC会话的生命周期,从一直建立连接到不再需要连接时关闭它。
Establishing a connection: The perfect negotiation pattern
完美协商(Perfect negotiation)是一种建议您遵循信令流程的设计模式,它可以提供透明的协商,同时让双方都可以成为提供者或应答者,而无需进行大量编码来区分两者。
Signaling and two-way video calling
一个教程和示例,它转变为上一个示例创建的基于WebSocket的聊天系统,并增加了对在参与者之间进行视频通话的支持。 聊天服务器的WebSocket连接用于WebRTC信令。
Codecs used by WebRTC
WebRTC要求浏览器支持的编解码器指南以及各种流行的浏览器支持的可选编解码器指南。 随附的指南可帮助您选择最适合自己需要的编解码器。
Using WebRTC data channels
本指南介绍了如何使用对等连接和关联的RTCDataChannel
在两个对等之间交换任意数据。
Using DTMF with WebRTC
WebRTC对与链接到老式电话系统的网关进行交互的支持包括对使用RTCDTMFSender
接口发送DTMF音频的支持。 本指南说明了如何进行。
Improving compatibility using WebRTC adapter.js
WebRTC组织在GitHub上提供了WebRTC适配器,以解决不同浏览器的WebRTC实现中的兼容性问题。 适配器是JavaScript填充程序,可让您将代码写入规范,以便在支持WebRTC的所有浏览器中“正常工作”。
Taking still photos with WebRTC
本文介绍如何使用WebRTC来访问支持WebRTC的计算机或手机上的相机并对其进行拍照。
A simple RTCDataChannel sample
RTCDataChannel
接口是一项功能,可让您在两个对等方之间打开一个通道,通过该通道可以发送和接收任意数据。 该API有意类似于WebSocket API,因此可以对每个API使用相同的编程模型。
手册 |
状态 |
评论 |
---|---|---|
WebRTC 1.0: Real-time Communication Between Browsers | 候选人推荐 | WebRTC API的初始定义。 |
Media Capture and Streams | 候选人推荐 | 传达媒体内容流的对象的初始定义。 |
Media Capture from DOM Elements | 工作草案 | 关于如何从DOM Elements获取内容流的初始定义 |
除了这些定义使用WebRTC所需的API的规范之外,在资源下还列出了几种协议。
MediaDevices
MediaStreamEvent
MediaStreamConstraints
MediaStreamTrack
MessageEvent
MediaStream