WebRTC的架构与术语

本文详细介绍了WebRTC的顶层架构,包括设备抽象层、音视频通信引擎层、会话管理层、C++ API层和Web API层,并重点解析了音视频通信引擎层的三个组成部分。此外,还探讨了WebRTC的传输协议栈,如STUN、TURN和ICE,为后续深入学习WebRTC提供基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文描述了Google开源的WebRTC项目的架构和关键术语,为后续深入学习WebRTC建立基本的概念。

WebRTC顶层架构

Google的开源WebRTC项目的顶层架构如下图所示:

 WebRTC项目可划分为5个抽象层次,这5个抽象层次自底向上分别是:

  1. 设备抽象层:封装与操作系统相关的音视频采集/渲染设备、网络传输接口。

  2. 音视频通信引擎层:封装了实时视频通信引擎、实时语音通信引擎、网络传输机制,此层实现了通用的实时音视频通信机制,不包含与具体应用场景相关的候选、媒体、网络协商逻辑。此层是最核心的最复杂的一层,由多个模块构成。

  3. 会话管理层:封装了基于信令的会话管理相关逻辑。

  4. C++ API层:封装了供原生App的C++模块调用的API。

  5. Web API层:封装了供浏览器端JavaScript层调用的API。

上述抽象层次的第2层【音视频通信引擎层】可细分为3个独立的功能单元:

  1. 语音引擎:包含各种音频编解码器、Net EQ(网络均衡器),AEC回声消除,AGC增益,ANS噪声抑制。

  2. 视频引擎:包含各种视频编解码器、JitterBuffer(抖动缓冲),图像增强(视频图像后期处理)。

  3. 传输协议栈:包含SRTP传输协议、网络连接复用、P2P传输协议(STUN+TURN+ICE)。

WebRTC传输协议栈

WebRTC相关术语

STUN:全称为Simple Traversal of User Datagram Protocol Through Network Address Translators),中文含义为“简单的用UDP穿透NAT”,是一种Client/Server的协议,也是一种Request/Response的协议,默认端口号是3478。详情参考RFC 3489 - STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs),RFC 5389 - Session Traversal Utilities for NAT。

TURN:全称为Traversal Using Relays around NAT,中文含义为“使用中继穿透NAT:STUN的中继扩展”。TURN与STUN的共同点是通过修改应用层中的私网地址达到NAT穿透的效果,不同点是TURN是作为通讯双方的“中继转发器”的方式实现透传。当两台主机之间不能建立点对点的连接时(P2P打洞失败),TURN协议就是用来允许主机控制中继的操作并且使用中继与对端交换数据。TURN与其他中继控制协议不同的是它能够允许一个客户端使用一个中继地址与多个对端建立通信(模仿全锥型NAT)。详情参考RFC 5766 - Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN) 。

ICE:全称为Interactive Connectivity Establishment,中文含义为“交互式连接建立”,由IETF的MMUSIC工作组开发出来的,它所提供的是一种框架,使各种NAT穿透技术可以实现统一。ICE跟STUN和TURN不一样,ICE不是一种协议,而是一个框架(Framework),它整合了STUN和TURN。

此文概括了WebRTC的5个抽象层次,并描述了Web传输协议栈结构及WebRTC相关术语,让读者有一个总体的概念。后续,作者将自顶向下逐层讲解,带领读者全面掌握WebRTC API的用法和WebRTC引擎核心模块的基本原理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADM实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值