webRTC是 Google在2011年开源的跨平台的音视频引擎,可用于浏览器,提供简单的javascript就可以达到实时通讯。提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。

可应用于游戏、即时通讯、文件传输等领域,对音视频处理有完整的解决方案,如回音消除、降噪等。

目录结构

webRTC介绍与运行机制

紫色区域为应用层,为web开发者接口API
绿色区域为核心层,分为四层
1)提供C++API(peerconection)
2)session层,上下文管理层,包括音视频,非音视频信息处理
3)音频引擎:包括编解码器、音频缓冲buffer,用于适配、回音消除、降噪,静音检测
视频引擎:包括编解码器,视频缓冲buffer,图像增强
传输:SRTP、RTCP、复用、P2P等
4)音频采集、视频采集、网络IO,虚线代表可重载,可以自己实现模块代替它

webRTC源码目录结构

目录 功能
api WebRTC接口层,浏览器都是通过该接口调用webRTC
call 数据流等管理层、call代表同一断点等所有数据的流入流出
video 与视频相关的逻辑
audio 与音频相关的逻辑
common_audio
common_video 视频算法相关
media 与多媒体相关的逻辑,如编解码的逻辑处理
logging 日志相关
module 最重要的目录,子模块
pc peerconnection,连接相关的逻辑层
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_capture 桌面采集相关的代码
pacing 码率探测及平滑处理相关的代码
remote_bitrate_estimator 远端码率估算相关的代码
rtp_rtcp rtp/rtcp协议相关代码
video_capture 视频采集相关的代码
video_coding 视频编辑吗相关的代码
video_processing 视频前后处理相关的代码

webRTC运行机制

1.Peerconnection调用过程的步骤

1)内部有两个线程worker thread和signaling thread
2)创建工厂PeerConnectionFactoryInterface
3)创建音视频轨
4)通过AddTrack创建音视频流
5)通过AddStream创建PeerConnectionInterace
6)最后通过Observer输出
webRTC介绍与运行机制

2.调用时序图

webRTC介绍与运行机制

1)应用层触发creatPeerconnectionFactory创建工厂
2)通过CreatPeerConnection创建连接,创建流和视频轨
3)通过Addstream添加到连接中
4)当流发生变化会触发一个信息offer发送到信令
5)信令收到answer后传给连接
6)连接拿到媒体信息建立通道
7)连接将远端的流发送到APP中去

相关文章:

  • 2021-10-12
  • 2021-11-30
  • 2021-09-17
  • 2021-11-15
  • 2022-02-12
  • 2021-10-07
  • 2021-12-16
猜你喜欢
  • 2021-11-05
  • 2022-12-23
  • 2022-01-12
  • 2021-05-14
  • 2021-10-23
  • 2021-08-13
  • 2021-06-28
相关资源
相似解决方案