实时音视频(RTC)服务架构
现代 RTC 系统通常采用“信令与媒体分离”的双通道设计,
信令服务器 (Signaling Server):负责传输控制类指令(如呼叫建立、SDP 交换、房间状态同步)。通常使用WebSocket实现全双工通信,确保控制消息不丢失。因信令不涉及媒体数据,可独立于媒体服务器部署。
媒体处理转发系统:流媒体服务器,负责接收、处理和转发音视频流。主流架构:SFU (选择性转发单元)是目前的主流选择。它只转发媒体包,不进行编解码混流,因此延迟低、CPU消耗小。通过支持Simulcast技术,SFU能根据每个接收端的网络状况,智能选择最合适分辨率的流进行转发,优化弱网体验。
NAT穿透服务器 (STUN/TURN):连接可靠性的“最后防线”
STUN (简单UDP穿透NAT):轻量级服务,帮助客户端发现其公网IP和端口。但对对称型NAT无效。
TURN (使用中继穿透NAT):当直连失败时,作为媒体流的中转站,保证连接成功。由于TURN需要处理媒体数据流量,部署时需考虑带宽成本和全球分布式节点布局,以降低延迟
WebRTC
Web Real-Time Communication,网页实时通信
W3C + IETF 标准、Google 开源,浏览器 / 客户端原生内置的实时音视频 + 数据传输协议栈,不需要插件,底层默认 UDP 低延迟传输、强制加密。
WebRTC 是客户端能力标准;SFU(mediasoup/MediaSFU)是服务端转发架构。
三大核心 API(JS 层面)
- getUserMedia / getDisplayMedia获取摄像头、麦克风、屏幕共享媒体流
- RTCPeerConnection(核心)管理连接:SDP 协商、ICE 打洞、DTLS 加密、RTP 媒体收发、带宽评估 BWE、NACK 丢包重传
- RTCDataChannelUDP 可靠 / 不可靠二进制通道,用来传文字、文件、指令、白板数据(不经过音视频)
核心底层协议栈
- SDP:会话描述,协商双方能力(支持什么编码、分辨率、采样率等,Offer/Answer)
- ICE + STUN + TURN:NAT 内网穿透
- STUN:拿到本机公网 IP,优先尝试 P2P 直连
- TURN:直连失败时,数据包走服务器中继兜底(Coturn 就是常用 TURN 服务)
- DTLS-SRTP:强制加密,RTP 音视频数据包加密传输
- RTP/RTCP:媒体包封装 + 网络反馈(带宽、丢包、延迟,用来动态调码率)
- SCTP:DataChannel 底层传输
实时音视频(RTC)服务架构
主流架构有以下几种,音视频数据的流动路径、处理方式、支持的并发规模以及最终的用户体验(如延迟、画质、流畅度)
Mesh 架构(点对点P2P架构)
MCU 架构(多点控制单元架构)
SFU架构(选择性转发单元架构)
Selective Forwarding Unit,选择性转发单元,是目前最流行的实时音视频通信架构。
只转发流,不解码合成,性能高,多人会议首选
混合架构(Hybrid Architecture)
技术选型
| 对比维度 | mediasoup | ZLMediaKit | SRS |
|---|---|---|---|
| 核心定位 | 专业 WebRTC SFU 底层库,专注多人实时音视频通话 | 全能流媒体网关框架,主打多协议互转、安防 / 车载设备接入 | 轻量化直播服务器,互联网大规模低延迟直播、连麦 |
| 语言架构 | C++ Worker + Node/Rust 上层 API,多 Worker 隔离扩容 | C++11,多线程异步 IO,跨平台(ARM / 国产芯片友好) | C++,单进程事件驱动,集群 / 边缘成熟 |
| WebRTC 能力 | ⭐⭐⭐⭐⭐原生 SFU、Simulcast/SVC、TWCC、NACK、DataChannel,多人会议最优 | ⭐⭐⭐⭐支持 WebRTC 推拉流,但不是强 SFU 设计,多人会议适配弱 | ⭐⭐⭐⭐新版支持 WHIP/WHEP、SFU 模式,适合直播连麦,复杂多人会议弱 |
| 协议栈 | WebRTC、裸 RTP;不擅长传统流媒体协议 | 最全:RTSP/RTMP/HLS/HTTP-FLV/GB28181/WebRTC,任意互转 | RTMP/HLS/HTTP-FLV/SRT/WebRTC,传统直播协议成熟 |
| 开箱程度 | 极低!无内置信令、房间管理、录制,业务层全自研 | 中等,自带 REST/API,可快速做协议转发、设备接入 | 高,配置简单,自带集群、转码、录制,快速上线直播 |
| 典型场景 | 多人视频会议、在线课堂、多人实时协同、纯 WebRTC 互动 | 安防监控、车载 JT1078、GB28181 设备接入、RTSP 转 WebRTC 网关 | 秀场直播、低延迟大规模 CDN 分发、主播连麦 |
| 开发成本 | 高,需要自研 WebSocket 信令、房间、鉴权、负载均衡 | 中,重点在业务逻辑,协议转换底层成熟 | 低,少量配置即可跑通大规模直播 |
| 社区生态 | 海外强,WebRTC 领域标杆,国内资料偏少 | 国内非常活跃,安防 / 物联网圈大量落地 | 国内最强,直播行业大规模商用验证 |
| 短板 | 不支持 RTSP/GB28181 等传统设备接入,开发量大 | 多人 WebRTC 会议体验不如 mediasoup,SVC / 多层流支持弱 | 复杂多人会议(30 人以上)不推荐,SFU 能力不如 mediasoup |