2

WebRTC整体结构

在WebRTC官网上的WebRTC架构图清晰的说明了其整体的架构和设计思路。

可以看到,这张图被分为了紫色和绿色两大部分。
其中紫色部分为浏览器提供的JavaScript Api,紫色箭头为上层应用。
绿色部分为WebRTC的核心部分,是封装好的WebRTC库。

WebRTC架构图

WebRTC核心层(绿色部分)

WebRTC核心层,分为了四个层级

C++ Api层

通过观察源码可以看到,Api层主要提供了PeerConnection功能,其中包括传输质量、数据、流等。此外本层还提供了音视频采集、非音视频传输、设备管理的接口等。

可以看到,WebRTC对外暴露的接口非常少,极大的降低了使用的难度

image.png

Session层

在创建了音频、视频,或进行数据传输时,需要在Session层处理。

Session层有相关的处理逻辑。

image.png

核心层

在核心层,包含了音频引擎(Voice Engine)、视频引擎(Video Engine)和传输(Transport)

可以看到,核心层的音频、视频、传输引擎相互独立。

音频引擎

编解码模块(iSAC/iLBC),可将Opus和aac加入到模块中。
缓冲模块(NetEQ)是音频缓冲的Buffer,用于网络防抖。
回音消除与降噪(Echo Canceler/Noise Reduction)。
image.png

视频引擎

目前支持了H264、OpenH264,对于XH264可添加对应模块.
视频Buffer,用于网络防抖。
视频、图像增强模块会有对应的接口,可以自己实现美颜、人脸识别等功能。
image.png

传输引擎

底层使用UDP,上层使用RTP。
多流复用通道。
P2P协议。
image.png

硬件相关层

包含了音频的采集与渲染、视频的采集(没有渲染),网络i/o

在WebRTC的内核中并不包含视频的渲染
视频的渲染都是在应用层或浏览器层完成

image.png
在本层中,所有模块(画虚线部分)都可以进行重载,可以通过自己编写方法来代替。


ycsx
75 声望5 粉丝

引用和评论

0 条评论