● 简介 WebRTC是一门实时通讯技术,它允许它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览 器之间点对点的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。 ● WebRTC用到的协议 ICE:是一个允许你的浏览器和对端浏览器建立连接的协议框架。该技术能过让客户端成功的穿透,远程用户和网络之间存在的各类防火墙(网络协商) STUN:NAT的UDP简单的网络协议,它允许位于NAT后的客户端找出自己的公网地址,查出自己位于那种类型的NAT之后,以及NAT为某一个本地端口绑定的Internet端端口。这些信息用来在两个同时处于在NAT路由后的主机之间进行通信。
获得了公网ip,也不一定能建立连接,因为不同类型的NAT处理传入的udp分组的方式是不同的。STUN穿透:完全圆锥型NAT,受限圆锥型NAT和端口受限圆锥型NAT。但是大型公司中经常采用的对称型NAT是不能使用的,一些路由器严格地限定了部分私网设备的对外连接。这种情况下,即使 STUN 服务器识别了该私网设备的公网 IP 和端口的映射,依然无法和这个私网设备建立连接。这种情况下就需要转向 TURN 协议。
网络协商: 双方需要了解对方的网络情况,这样才会找到一条能够彼此通信的链路。 (1)获取外网的IP地址映射 (2)通过信令服务器进行网络的交换 理想情况下每个电脑的浏览器都有自己私有的公网IP,可以进行点对点的连接
实际情况下,电脑和电脑之间或大或小只在某一个局域网中,需要NAT进行地址转换
局域网ip绑定,
STUN:告诉我你公网ip地址+端口号是什么。搭建STUN服务器很简单,流媒体传输是按照P2P的方式。
问题:STUN并不是每次都能够成功的为需要的NAT的通话设备分配IP地址的,P2P在传输媒体流时,使用本地带宽,在多人音视频通话的过程中,通话质量好坏往往需要根据使用者本地带宽确定
TURN:TURN是STUN/RFC5389的一个扩展,主要添加了Relay功能。如果终端在NAT之后,那么特定的情况下有可能使得终端无法和对等端进行直接通信,这个时候就需要公网服务器作为一个中继,对来往的数据进行转发。转发的协议被定义为TURN。 STUN在分配公网ip失败后,可以通过TURN服务器请求公网的ip地址作为中继地址。这种方式的带宽由服务器承担,在多人视频聊天的时候,本地带宽压力较小。
媒体协商: SDP:会话描述协议是一个描述多媒体连接内容的协议。(媒体协商)
A端音视频采用vp8编码发送给B端,B端怎么去解码。 B端采用vp9编码,发送给A端,A端怎么去解码。 比如:A端可以采用vp8和H264编码,B端采用VP9和H264编码,为了确保两端都能正确的解码。最简单的就是采用H264编码。 注:SDP在webrtc中,可以描述上面的信息。在音视频通讯的时候,双方需要交换SDP。
媒体协商+网络协商数据的交换通道 两个客户端交换媒体信息和网络信息,通过信令服务器来实现。
信令服务器除了交换网络协商信息和媒体协议信息,比如房间的管理,音视频播放的音乐信息,进度条信息等都需要通过信令服务器实现。
|