概述
-
音视频处理 + 即时通讯的开源库
-
2010年Google将其开源
-
非常优秀的多媒体框架,跨平台
作用
-
音视频实时互动
-
游戏、即时通讯、文件传输等等
-
一个百宝箱, 传输、音视频处理(回音消除、降噪等)
掌握点
-
音视频设备访问与管理
-
音视频数据的采集
-
数据的传输和实时互动
-
WebRTC的工作机制
官方Demo
WebRTC整体架构
简述:
1.核心部分为绿色部分, WebRtc提供的核心Api(native层)
⑴ C++ Api
⑵ Seesion层(上下文管理) 相关逻辑在这部分实现
⑶ 音频引擎、视频引擎、传输
音频:编解码、音频缓冲buffer、回音消除
视频:VP8、H264、视频jitter buffer、图像增强、人脸识别等
传输: 底层utp协议、复用、P2P协议
⑷ 音频的采集与渲染, 视频的采集, network IO
2.紫色区域为JavaScript应用Api层
WebRTC的目录结构
| 目录 | 功能 |
|---|---|
| api | WebRtc接口层,浏览器都是通过该接口调用WebRtc |
| call | 数据流的管理层,Call代表同一个端点的所有数据的流入流出 |
| video | 与视频相关的逻辑 |
| audio | 与音频相关的逻辑 |
| common_audio | 音频算法相关 |
| common_video | 视频算法相关 |
| media | 与多媒体相关的逻辑处理,如何解码的逻辑处理 |
| logging | 日志相关 |
| module | 最重要的目录,子模块 |
| pc | Peer connection, 连接相关的逻辑层 |
| p2p | 端对端相关代码, stun,turn |
| rtc_base | 基础代码,如线程、锁相关的统一接口代码 |
| rtc_tool | 音视频分析相关的工具代码 |
| tool_webrtc | WebRTC测试相关的工具代码,如网络模拟器 |
| system_wrappers | 与具体操作系统相关的代码。如CPU特性, 原子操作等 |
| stats | 存放各种数据统计相关的类 |
| sdk | 存放Android 和 IOS 层代码。如视频的采集,渲染等 |
WebRTC的Modules目录结构
| 目录 | 功能 |
|---|---|
| audio_coding | 音频编解码相关代码 |
| audio_device | 音频采集与音频播放相关代码 |
| audio_mixer | 混音相关代码 |
| audio_processing | 音频前后处理的相关代码 |
| bitrate_controller | 码率控制相关代码 |
| congestion_controller | 流控相关的代码 |
| desktop_captuure | 桌面采集相关的代码 |
| pacing | 码率探测及平滑处理相关的代码 |
| remote_bitrate_estimator | 远端码率估算相关的代码 |
| rtp_rtcp | rtp/rtcp协议相关的代码 |
| video_capture | 视频采集相关的代码 |
| video_coding | 视频编解码相关的代码 |
| video_processing | 视频前后处理相关的代码 |