前言 linux
WebRTC,名称源自网页实时通讯(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术。而且还支持跨平台:windows,linux,mac,android,iOS。android
实现原理web
P2P链接模式windows
通常咱们传统的链接方式,都是以服务器为中介的模式:浏览器
相似http协议:客户端<——>服务端(固然这里服务端返回的箭头仅仅表明返回请求数据)。安全
进行即时通信时,进行文字、图片、录音等传输的时候:客户端A——服务器——客户端B。服务器
而点对点的链接偏偏数据通道一旦造成,中间是不通过服务端的,数据直接从一个客户端流向另外一个客户端:网络
客户端A——客户端B ... 客户端A——客户端C ...(能够无数个客户端之间互联)session
这个过程就像音视频通话的应用场景,咱们服务端确实是不必去获取二者通讯的数据,并且这样作有一个最大的一个优势就是,大大的减轻了服务端的压力。框架
而WebRTC就是这样一个基于P2P的音视频通讯技术。
客户端A与B创建p2p链接的过程
1.A和B链接上服务端,创建一个TCP长链接(任意协议均可以,WebSocket/MQTT/Socket原生/XMPP),为了省事,直接采用WebSocket,这样一个信令通道就有了。
2.A从服务器得到ice server同时生成包含session description(SDP)的offer,发送给Socket服务端。
3.Socket服务端把A的offer和candidate转发给B,B会保存下A这些信息。
4.而后B发送包含本身session description的answer(由于它收到的是offer,因此返回的是answer,可是内容都是SDP)和ice candidate给Socket服务端。
5.Socket服务端把B的answer和ice candidate给A,A保存下B的这些信息。
信令的类型
会话描述协议(Session Description Protocal,简称SDP)
信令的主要内容的格式都遵循会话描述协议
1) 会话的名称和目的
2) 会话存活时间
3) 包含在会话中的媒体信息,包括:
媒体类型(video, audio, etc)
传输协议(RTP/UDP/IP, H.320, etc)
媒体格式(H.261 video, MPEG video, etc)
多播或远端(单播)地址和端口
4) 为接收媒体而需的信息(addresses, ports, formats and so on)
5) 使用的带宽信息
6) 可信赖的接洽信息
一个SDP的信令的内容大体上以下:
实时传输控制协议(Real-time ControlProtocol,RTCP)
Sdp协议内规定的视频传输控制协议就是rtcp