核心设计
- 把RTC技术与CDN架构融合,一套架构同时支持WebRTC和RTMP
- 支持一对一,多人互动场景
- 支持直播,大规模分发场景
- 架构保持足够简单,降低运维成本
对RTMP协议的改造
- 如果要让webrtc和rtmp无缝互通,需要拓展rtmp对opus编码(48k采样)的支持,rtmp本身并不支持opus
- 同时在ffmpeg中拓展rtmp对opus编码(48k采样)的支持
边缘节点设计
- 边缘节点支持的能力: rtmp/webrtc推流,webrtc拉流
- 边缘节点不做任何的编解码操作,只作为接入点和分发点
- 支持rtmp(h264/aac/opus)的回源
- 如果是webrtc推流,转封装为rtmp(h264/opus)
- 为保证低延迟,回源跳数应该控制3-4跳以内
源站设计
- 回源协议协议全部为rtmp
- 源站做aac/opus的转码和重采样
- 支持第三方CDN的回源
客户端SDK的设计
- 把推流SDK抽象为RTCPusher,封装rtmp和webrtc推流的能力
- 把拉流SDK抽象为RTCPlayer,封装webrtc播放的能力
- 直播场景为一个pusher, 一个player
- 互动场景为一个pusher, 多个player