什么是WebRTC
WebRTC是一种通过js语言来实现音视频处理的规范。目前市面上的主流浏览器都已支持WebRTC库,也就是说WebRTC在浏览器之间进行实时音视频通信的技术已经十分成熟了。
WebRTC处理过程
WebRTC 在实现音视频实时通话的过程大致可以分为四部分,即两个WebRTC终端,一个信令服务器(Signal),一个STUN/TURN服务器。
WebRTC终端:负责音视频采集、编解码、NAT穿越、音视频数据传输。
信令服务器:负责信令处理,如加入房间、离开房间、媒体协商消息的传递等。
STUN/TURN服务器:负责获取WebRTC终端在公网的IP地址,以及NAT穿越失败后的数据中转。
WebRTC进行音视频通话的大体过程
当一端进入到房间之前,它首先会检测自己的设备是否可用,如果设备可用,它就可以开始采集自己的音视频数据了。对于采集到的数据,一方面可以用于预览,另一方面可以将数据保存为文件。
当第二个终端进入房间之后,第一个终端就会收到另一个用户已经加入成功的消息。此时第一个终端会创建“媒体连接”对象,即RTCPeerConnection对象,并将采集到的音视频数据通过RTCPeerConnection对象进行编码,最终通过p2p传送给对端。
当然在进行p2p穿越时很有可能会失败。所以,当p2p穿越失败的时候,为了保障音视频数据仍然可以互通,则需要通过TURN服务器进行音视频中转。
当音视频数据来到对端后,对端首先会将收到的音视频数据进行解码,然后再通过播放器将其展示出来。这样就完成了音视频数据从一端到另一端的单通。
如果要实现双方互通那么双方终端都需要通过各自的RTCPeerConnection传输自己这一端的音视频数据。