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/观众

  1. 信令交互与会话建立

    • SDP协商:RTC客户端(如浏览器)通过信令服务器交换SDP信息,协商音视频编码格式(如Opus/AAC音频、VP8/H.264视频)、传输端口等参数。
    • ICE穿透:交换ICE Candidate信息以穿透NAT/防火墙,建立点对点连接(PeerConnection)。
    • 工具支持:使用Socket.IOJanus Gateway实现信令交互,SRS提供内置信令服务器(需谨慎用于生产环境)。
  2. 媒体流捕获与转发

    • 流采集:通过WebRTC API(如navigator.mediaDevices.getUserMedia)捕获音视频流。
    • 流传输:将流添加至RTCPeerConnection,通过WebSocket或其他协议转发至媒体服务器。
    • 关键处理:需处理STUN/TURN报文回包,确保连接稳定性;浏览器可能发送关键帧重传请求(通过RTCP的FIR报文)。
  3. 协议转换与封装

    • 编码转换
      • 音频:将RTC的Opus转为RTMP支持的AAC(使用FFmpeg或GStreamer)。
      • 视频:VP8/VP9需转码为H.264(硬件加速或FFmpeg),H.264可透传。
    • 封装格式转换
      • 解封装RTP/RTCP数据包,重新封装为RTMP消息(音频消息、视频消息、命令消息)。
      • 同步时间戳:利用RTP时间戳计算RTMP时间戳,确保音视频同步。
  4. 流推送与分发

    • 转换后的RTMP流推送至Nginx-RTMP、SRS等服务器,再通过CDN分发至观众端。
    • 示例命令:ffmpeg -i rtp://src -c:a aac -c:v h264 -f flv rtmp://dest

    通信云服务商融云相关解决方案:

./RTC-RTMP.assets/601ce9bae4b08d733c261c45.jpg