WebRTC:整体架构、目录结构、运行机制
整体架构
上图中分为2层:应用层、核心层
- 最核心的是绿色的部分,是WebRTC提供的核心功能。
- 紫色部分是浏览器提供的js API层。[即浏览器对WebRTC核心层的C++做了封装]
WebRTC库属于核心层(绿色部分)。
核心层比较复杂:分为4层:
- C++ API: 提供给外边的API接口(主要是对等连接PeerConnection)
- Session上下文管理层:管理相关的逻辑
- 引擎层:音频引擎(编解码、音频缓冲buffer防止抖动、回音消除)、视频引擎(图形处理增强、防抖动、人脸识别等)、传输(底层是UDP,上层RTP,安全传输SRTP、多个流的通道复用、P2P协议、线路的检测估算网络带宽等、音视频非音视频的传输)。【音频和视频的同步不是在引擎层做的】
- 与硬件相关:音频的采集的渲染、视频的采集(无视频的渲染,需要浏览器/应用层自己去做)、网络IO
目录结构
需要掌握的目录结构:
1.源码目录:
2. Modules目录:
运行机制
1.轨与流:
- Track轨: 一路音频是一路轨,一路视频也是一路轨。2条轨之间永远不相交。单独存放。
- MediaStream流:包括音频轨、字幕轨等。
2. WebRTC中重要的类:
- MediaStream
- RTCPeerConnection
- RTCDataChannel
3.PeerConnection调用过程:
4.调用时序: