1-介绍
sequenceDiagram participant Publisher as 发布者 participant WTN as WTN服务器 participant Subscriber as 订阅者 Publisher->>WTN: 1. 发送 Offer SDP Note over Publisher,WTN: 包含音频和视频描述 WTN-->>Publisher: 2. 返回 Answer SDP Publisher->>WTN: 3. 建立WebRTC连接 Publisher->>WTN: 4. 发布音视频流 Subscriber->>WTN: 5. 请求订阅流 WTN-->>Subscriber: 6. 返回流信息 Subscriber->>WTN: 7. 建立WebRTC连接 WTN->>Subscriber: 8. 传输音视频流
来面来自于 火山引擎 rtc 页面的流程, 用了一个 WTN 服务器 做中转, 一样是全双工双向协议的还有 WebSocket 和 WebTransport ;
WebRTC vs WebSocket vs WebTransport
graph TB subgraph WebSocket WS1[应用层协议] WS2[基于TCP] WS3[服务器中转] end subgraph WebRTC W1[一套技术标准集合] W2[包含多个协议] W3[UDP/TCP] W4[点对点传输] W5[专门的音视频优化] end
graph TB subgraph WebRTC A1[点对点通信] A2[音视频流传输] A3[STUN/TURN/ICE] A4[适合视频会议] end subgraph WebTransport B1[客户端-服务器通信] B2[基于QUIC协议] B3[低延迟高吞吐] B4[适合游戏/直播] end
可以看出来 由于直播行业等等的发展 , WebRTC 则专门为音视频定制:
- 专门针对音视频 ;
- 内置功能: 音视频采集, 编解码, 网络传输, 回音消除 ;
音视频优化:
- 自动码率适应: 视频会议自动的调整清晰度 ;
- 丢包补偿: 即使网络不稳定,声音也不会断断续续 ;
- 回音消除: 解决串音问题 ;
- 噪声抑制: 自动过滤背景噪音, 开会对方也听不到周围的嘈杂声 ;
- 自动增益控制: 声音太大自动降低, 声音太小自动提高 ;
网络传输优化:
NACK: 丢包重传, 发现数据包丢失后立即要求重发 ;FEC: 前向纠错, 丢失了部分数据页能还原完整画面 ;RTX: 选择性重传, 优先保证关键画面的传输 ;PLI: 关键帧请求, 视频花屏快速的恢复清晰画面 ;
2-产品关系
看了一个火山引擎的 音视频集成的姿势.
