WebRTC学习篇(一)

374 阅读2分钟

概述

  1. 音视频处理 + 即时通讯的开源库

  2. 2010年Google将其开源

  3. 非常优秀的多媒体框架,跨平台

作用

  1. 音视频实时互动

  2. 游戏、即时通讯、文件传输等等

  3. 一个百宝箱, 传输、音视频处理(回音消除、降噪等)

掌握点

  1. 音视频设备访问与管理

  2. 音视频数据的采集

  3. 数据的传输和实时互动

  4. WebRTC的工作机制

官方Demo

Demo聊天室

WebRTC整体架构

简述:

1.核心部分为绿色部分, WebRtc提供的核心Api(native层)    

  ⑴ C++ Api
  ⑵ Seesion层(上下文管理) 相关逻辑在这部分实现
  ⑶ 音频引擎、视频引擎、传输
     音频:编解码、音频缓冲buffer、回音消除
     视频:VP8、H264、视频jitter buffer、图像增强、人脸识别等
     传输: 底层utp协议、复用、P2P协议
  ⑷ 音频的采集与渲染, 视频的采集, network IO  
 
2.紫色区域为JavaScript应用Api层    

WebRTC的目录结构

源码地址

目录功能
apiWebRtc接口层,浏览器都是通过该接口调用WebRtc
call数据流的管理层,Call代表同一个端点的所有数据的流入流出
video与视频相关的逻辑
audio与音频相关的逻辑
common_audio音频算法相关
common_video视频算法相关
media与多媒体相关的逻辑处理,如何解码的逻辑处理
logging日志相关
module最重要的目录,子模块
pcPeer connection, 连接相关的逻辑层
p2p端对端相关代码, stun,turn
rtc_base基础代码,如线程、锁相关的统一接口代码
rtc_tool音视频分析相关的工具代码
tool_webrtcWebRTC测试相关的工具代码,如网络模拟器
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_rtcprtp/rtcp协议相关的代码
video_capture视频采集相关的代码
video_coding视频编解码相关的代码
video_processing视频前后处理相关的代码