WebRTC主要由以下几个组成部分:
- 浏览器API:
WebRTC提供了一系列JavaScript API,使网页可以直接调用用户的摄像头和麦克风,并处理音视频通信相关的编码、解码、传输等功能。主要的API包括:
- getUserMedia:获取用户媒体流的访问权限。通过这个API,Web应用可以请求用户对摄像头和麦克风的控制权。用户授权后,应用可以获取本地音视频流进行处理。
- RTCPeerConnection:建立点对点的连接通道。这个API可以创建网络握手需要的会话描述信息,并发送到信令服务器;进行ICE候选地址收集;打开数据通道等。是建立浏览器间连接的关键。
- RTCDataChannel:支持点对点数据传输。提供了一个低延时、高吞吐量、双向通道,用于节点间直接传输数据。可用于传输文件、文本消息等。
- 多媒体引擎:
WebRTC内置了强大的音视频引擎,可以对媒体流进行编解码、回声消除、降噪等处理。主要使用的音视频编解码器有:
- OPUS:一个开源的低延迟音频编解码器,用于WebRTC的音频编码。
- G.711:传统的语音编码标准,可保证PSTN互操作性。
- H.264:视频编码领域的通用标准,提供了高效的视频压缩编码。
- VP8:Google开源的视频编解码器,质量高且不需支付专利许可费。现在主要用于WebRTC视频编码。
- 网络传输:
WebRTC利用ICE、STUN、TURN等技术,实现了浏览器之间的直接点对点连接,解决了NAT穿透问题,实现了高质量的网络传输。
- ICE(Interactive Connectivity Establishment,ICE):互动连接建立协议,用于连接对等点
- STUN(Session Traversal Utilities for NAT,STUN):会话遍历工具,用于辅助NAT穿透
- TURN(Traversal Using Relays around NAT,TURN):遍历服务器,在NAT完全受阻时提供中继功能
- 标识服务:
WebRTC使用DTLS和SRTP进行了媒体流的加密,保证了通信安全。并利用数字证书对通信用户进行身份标识。
- DTLS :基于UDP的数据报传输层安全协议,提供关键效验机制
- SRTP: 实时传输协议,对RTP报文进行加密