WebRTC原理、架构、框架目录、运行机制、核心类、PeerConnection调用过程详解
2024.02.16 19:35浏览量:6简介:WebRTC(Web Real-Time Communication)是一种支持实时音视频通信的开放标准,广泛应用于在线教育、远程会议、实时通讯等领域。本文将详细介绍WebRTC的原理、架构、框架目录、运行机制、核心类以及PeerConnection调用过程。
一、WebRTC原理
WebRTC允许在浏览器之间直接进行实时音视频通信,而无需依赖任何第三方插件或服务器。其原理基于peer-to-peer(点对点)连接,通过WebRTC API提供的接口,实现音视频流的传输和控制。
二、WebRTC架构
WebRTC整体架构从上到下一共分为三层,最上层是WbeAPI层,这一层是暴露给开发人员的用于开发WebRTC应用的JavaScript API;中间的那一层是WebRTC技术最为关键核心的一层,一共包括三个模块,分别是音频引擎、视频引擎以及网络传输;最下层是由各厂商自主开发的一层,用于实现音视频的采集和网络IO。
三、WebRTC框架目录
WebRTC目录结构大致如下:
- api:提供了对外的接口,音视频引擎层和Module的直接接口。
- audio:音频流的一部分抽象,属于引擎的一部分逻辑。
- base:属于Chromium项目的一部分,貌似WebRTC中用的并不多。
- build:编译脚本。
- call:主要是“呼叫”相关的逻辑。
- media:包括媒体引擎相关逻辑处理。
- pc:包括PeerConnection座的媒体协商、收集Candidate、音视频数据传输等逻辑处理。
- modules:存放的都是一些功能比较独立的模块,包括音视频的采集,处理,编解码器,混音、回声消除、降噪等功能的实现。
- rtc_base:基础代码,包含线程、锁等相关的统一接口代码,能够统一处理多端、多平台的差别等。
- rtc_tool:工具目录,包含音频、视频等分析工具。
- sdk:存放Android和IOS层代码,包含音视频采集和渲染等。
- system_wrappers:与操做系统、环境相关的逻辑代码,如cpu、系统差别等。
- stats:统计数据目录,包含丢包率、网络抖动等统计数据。
- tool_webrtc:WebRTC相关测试工具目录,如网络测试、音视频测试等。
- video:视频相关的逻辑,包括处理、编解码等api。
- common_audio:音频相关的算法目录app。
- common_video:视频相关的算法目录tcp。
- logging:日志目录工具。
- p2p:包含端对端的相关逻辑。
- pc:链接层,Peer Connection,包含链接相关的逻辑和轨的逻辑,经过本层能够拿到视频、音频信息等编码。
- rtc_tool:工具目录,包含音频、视频等分析工具。
- logging:日志目录工具。
- modules:模块目录,包含众多模块,具备可扩展性,在后文中具体介绍测试。
- testing:测试目录。
发表评论
登录后可评论,请前往 登录 或 注册