logo

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目录结构大致如下:

  1. api:提供了对外的接口,音视频引擎层和Module的直接接口。
  2. audio:音频流的一部分抽象,属于引擎的一部分逻辑。
  3. base:属于Chromium项目的一部分,貌似WebRTC中用的并不多。
  4. build:编译脚本。
  5. call:主要是“呼叫”相关的逻辑。
  6. media:包括媒体引擎相关逻辑处理。
  7. pc:包括PeerConnection座的媒体协商、收集Candidate、音视频数据传输等逻辑处理。
  8. modules:存放的都是一些功能比较独立的模块,包括音视频的采集,处理,编解码器,混音、回声消除、降噪等功能的实现。
  9. rtc_base:基础代码,包含线程、锁等相关的统一接口代码,能够统一处理多端、多平台的差别等。
  10. rtc_tool:工具目录,包含音频、视频等分析工具。
  11. sdk:存放Android和IOS层代码,包含音视频采集和渲染等。
  12. system_wrappers:与操做系统、环境相关的逻辑代码,如cpu、系统差别等。
  13. stats:统计数据目录,包含丢包率、网络抖动等统计数据。
  14. tool_webrtc:WebRTC相关测试工具目录,如网络测试、音视频测试等。
  15. video:视频相关的逻辑,包括处理、编解码等api。
  16. common_audio:音频相关的算法目录app。
  17. common_video:视频相关的算法目录tcp。
  18. logging:日志目录工具。
  19. p2p:包含端对端的相关逻辑。
  20. pc:链接层,Peer Connection,包含链接相关的逻辑和轨的逻辑,经过本层能够拿到视频、音频信息等编码。
  21. rtc_tool:工具目录,包含音频、视频等分析工具。
  22. logging:日志目录工具。
  23. modules:模块目录,包含众多模块,具备可扩展性,在后文中具体介绍测试。
  24. testing:测试目录。

相关文章推荐

发表评论