Contents
[TOC]
RTC(Real-Time Communication)
-
传输协议:基于UDP协议,采用实时传输协议(RTP)和控制协议(RTCP),支持低延迟传输,延迟通常在毫秒级(<200ms)。
-
技术特点:通过智能路由、动态拓扑调整及弱网优化算法(如AI降噪、超分辨率),实现抗丢包和带宽自适应,确保音视频流的稳定传输。
RTMP(Real-Time Messaging Protocol)
-
传输协议:基于TCP协议,通过三次握手建立连接,确保数据可靠传输,但延迟相对较高,通常在1-3秒。
-
技术特点:数据分片传输(如H.264视频切分为NALU单元),支持实时消息交互(如直播弹幕),但依赖TCP的拥塞控制机制,在弱网环境下可能卡顿。
RTMP延迟高的原因
| 维度 | RTMP | RTC |
|---|---|---|
| 协议基础 | TCP(三次握手、ACK重传) | UDP(0-RTT/1-RTT建连) |
| 拥塞控制 | TCP算法(CUBIC) | 自研算法(GCC/BBR) |
| 编解码 | H.264/AAC(固定GOP) | Opus/VP8(动态GOP、低延迟模式) |
| 弱网对抗 | TCP重传(高延迟) | FEC+ARQ+Jitter Buffer |
| 缓冲区 | 大缓冲区(2-5秒) | 自适应缓冲区(<100ms) |
| 关键帧 | 固定间隔(1-3秒) | 按需插入(毫秒级) |
RTC转RTMP协议
RTC客户端 → 信令服务器 → 转换服务器(FFmpeg/GStreamer) → RTMP服务器 → CDN/观众
-
信令交互与会话建立
- SDP协商:RTC客户端(如浏览器)通过信令服务器交换SDP信息,协商音视频编码格式(如Opus/AAC音频、VP8/H.264视频)、传输端口等参数。
- ICE穿透:交换ICE Candidate信息以穿透NAT/防火墙,建立点对点连接(PeerConnection)。
- 工具支持:使用
Socket.IO或Janus Gateway实现信令交互,SRS提供内置信令服务器(需谨慎用于生产环境)。
-
媒体流捕获与转发
- 流采集:通过WebRTC API(如
navigator.mediaDevices.getUserMedia)捕获音视频流。 - 流传输:将流添加至
RTCPeerConnection,通过WebSocket或其他协议转发至媒体服务器。 - 关键处理:需处理STUN/TURN报文回包,确保连接稳定性;浏览器可能发送关键帧重传请求(通过RTCP的FIR报文)。
- 流采集:通过WebRTC API(如
-
协议转换与封装
- 编码转换
- 音频:将RTC的Opus转为RTMP支持的AAC(使用FFmpeg或GStreamer)。
- 视频:VP8/VP9需转码为H.264(硬件加速或FFmpeg),H.264可透传。
- 封装格式转换
- 解封装RTP/RTCP数据包,重新封装为RTMP消息(音频消息、视频消息、命令消息)。
- 同步时间戳:利用RTP时间戳计算RTMP时间戳,确保音视频同步。
- 编码转换
-
流推送与分发
- 转换后的RTMP流推送至Nginx-RTMP、SRS等服务器,再通过CDN分发至观众端。
- 示例命令:
ffmpeg -i rtp://src -c:a aac -c:v h264 -f flv rtmp://dest。
通信云服务商融云相关解决方案:
