1.技术定义
WebRTC 是一组标准化的 API 和协议,支持浏览器、移动端及物联网设备间直接传输音视频流和任意数据。其核心特性包括:
实时性:低延迟传输,适用于音视频通话、直播等场景。
P2P 连接:通过 NAT 穿越技术(如 STUN/TURN)直接建立端到端通信,减少服务器依赖。
跨平台:支持 Web(Chrome、Firefox 等)、iOS、Android 及嵌入式设备。
2.关键组件
MediaStream:封装音视频数据流,可通过设备摄像头/麦克风获取,并绑定到
RTCPeerConnection:管理会话的建立、媒体协商(SDP)及网络协商(ICE Candidate),类似 HTTP 请求中的网络控制层。
RTCDataChannel:支持二进制和文本数据的低延迟传输,适用于文件共享或远程控制。
3.工作原理
WebRTC 通信需解决两大核心问题:媒体格式协商和网络穿透,具体流程如下:
信令服务器(Signaling Server)
用于交换会话元数据(如 SDP 和 ICE Candidate)。信令服务器本身不参与数据传输,仅作为信息中介。
媒体协商(SDP)
SDP(Session Description Protocol):描述媒体流的格式(如编解码器类型 H264/VP8)、分辨率等参数。双方通过交换 SDP 确定兼容的媒体格式。
示例流程:用户 A 创建 Offer SDP,用户 B 返回 Answer SDP,完成协商。
网络穿透(ICE Candidate)
STUN/TURN 服务器:
STUN:获取设备的公网 IP 和端口,解决局域网无法直接通信的问题。
TURN:当 STUN 穿透失败时,通过中继服务器转发数据(需承担带宽成本)。
ICE(Interactive Connectivity Establishment):自动选择最优网络路径(优先直连,次选中继)。
4.完整通讯流程
-
用户 A/B 通过 getUserMedia 获取本地音视频流。
-
创建 RTCPeerConnection 实例,添加本地流。
-
用户 A 生成 Offer SDP,通过信令服务器发送给用户 B。
-
用户 B 生成 Answer SDP 并返回。
-
双方交换 ICE Candidate,建立网络连接。
-
连接成功后,音视频数据通过 P2P 通道传输。