上一篇我们对WebRTC进行了整体的介绍和学习,作为技术人员,我们学习过程中是要了解一个技术的原理的,接下来我们就来学习一下WebRTC的原理与架构,下边是官网的架构图:

架构图颜色标识说明:

(1)应用层:紫色部分是Web开发者API层;

(2)核心层:蓝色实线部分是面向浏览器厂商的API层(也就是红色框标内模块,也是本人专注研究的部分)

(3)核心层:蓝色虚线部分浏览器厂商可以自定义实现

WebRTC架构组件介绍

(1) Your Web App
Web开发者开发的程序,Web开发者可以基于集成WebRTC的浏览器提供的web API开发基于视频、音频的实时通信应用。

(2) Web API
面向第三方开发者的WebRTC标准API(Javascript),使开发者能够容易地开发出类似于网络视频聊天的web应用,最新的标准化进程可以查看这里。

(3) WebRTC Native C++ API
本地C++ API层,使浏览器厂商容易实现WebRTC标准的Web API,抽象地对数字信号过程进行处理。最主要的包括PeerConnection,音视频传输,非音视频数据传输等为数不多的接口,降低应用层开发难度;

(4) Transport / Session
传输/会话层,也就是上下文管理层,管理音视频。非音视频等数据处理逻辑;

a.  RTP Stack协议栈
Real Time Protocol

b.  STUN/ICE
可以通过STUN和ICE组件来建立不同类型网络间的呼叫连接。

c.  Session Management
一个抽象的会话层,提供会话建立和管理功能。该层协议留给应用开发者自定义实现。

(5) VoiceEngine
音频引擎是包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整个解决方案。
PS:VoiceEngine是WebRTC极具价值的技术之一,是Google收购GIPS公司后开源的。在VoIP上,技术业界领先,后面的文章会详细了解,现在音频编解码方面用的最多的是OPUS、AAC。

a.  iSAC
Internet Speech Audio Codec
针对VoIP和音频流的宽带和超宽带音频编解码器,是WebRTC音频引擎的默认的编解码器
采样频率:16khz,24khz,32khz;(默认为16khz)
自适应速率为10kbit/s ~ 52kbit/;
自适应包大小:30~60ms;
算法延时:frame + 3ms

b.  iLBC
Internet Low Bitrate Codec
VoIP音频流的窄带语音编解码器
采样频率:8khz;
20ms帧比特率为15.2kbps
30ms帧比特率为13.33kbps
标准由IETF RFC3951和RFC3952定义

c.  NetEQ for Voice
针对音频软件实现的语音信号处理元件
NetEQ算法:自适应抖动控制算法以及语音包丢失隐藏算法。使其能够快速且高解析度地适应不断变化的网络环境,确保音质优美且缓冲延迟最小。
是GIPS公司独步天下的技术,能够有效的处理由于网络抖动和语音包丢失时候对语音质量产生的影响。
PS:NetEQ 也是WebRTC中一个极具价值的技术,对于提高VoIP质量有明显效果,加以AEC\NR\AGC等模块集成使用,效果更好。

d.  Acoustic Echo Canceler (AEC)
回声消除器是一个基于软件的信号处理元件,能实时的去除mic采集到的回声。

e.  Noise Reduction (NR)
噪声抑制也是一个基于软件的信号处理元件,用于消除与相关VoIP的某些类型的背景噪声(嘶嘶声,风扇噪音等等… …)

(6) VideoEngine
WebRTC视频处理引擎
VideoEngine是包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示整个完整过程的解决方案。还有H264、openH264等。

a.  VP8
视频图像编解码器,是WebRTC视频引擎的默认的编解码器
VP8适合实时通信应用场景,因为它主要是针对低延时而设计的编解码器。
PS:VPx编解码器是Google收购ON2公司后开源的,VPx现在是WebM项目的一部分,而WebM项目是Google致力于推动的HTML5标准之一

b.  Video Jitter Buffer
视频抖动缓冲器,可以降低由于视频抖动和视频信息包丢失带来的不良影响。

c.  Image enhancements
图像质量增强模块
对网络摄像头采集到的图像进行处理,包括明暗度检测、颜色增强、降噪处理等功能,用来提升视频质量。
(6) Transport
      
底层用的UDP,上层用的RTP/SRTP、RTCP
      Multiplexing,复用,多个流复用同一个通道,

下边最后一层是与硬件相关的,这三个模块都是可重载的,增加灵活度,Chrome就用的自己的音视频渲染,介绍如下:

(7) Audio Capture/Render
   
 音频的采集与渲染

(8) Video Capture
     
视频采集,这里没有视频的渲染,这个需要应用层自己去做

(9) Network I/O
     
网络I/O

WebRTC入门与实战 --- WebRTC原理与架构相关推荐

  1. xgboost入门与实战(原理篇)

    1.序 xgboost是大规模并行boosted tree的工具,它是目前最快最好的开源boosted tree工具包,比常见的工具包快10倍以上.在数据科学方面,有大量kaggle选手选用它进行数据 ...

  2. XGBoost入门及实战

    kaggle比赛必备算法XGBoost入门及实战 xgboost一直在kaggle竞赛江湖里被传为神器,它在对结构化数据的应用占据主导地位,是目前开源的最快最好的工具包,与常见的工具包算法相比速度提高 ...

  3. WebRTC 教程一:WebRTC信令、架构和 API 入门

    本文主要介绍了 WebRTC 是什么,其和 Websocket 的异同,WebRTC 信令,架构和 API 入门. What is WebRTC WebRTC: Web Real Time Commu ...

  4. webrtc 入门第二章 音视频录制

    webrtc 入门第二章 音视频录制 一.介绍 1.媒体录制原理 ​ 在很多场景中回放音视频资源的需求是非常重要的例如会议,直播授课等.任何媒体形式的表情都可进行录制,如 ,,等.其中内容更加自由用户 ...

  5. Java Spring Boot 2.0实战Docker容器与架构原理,视频与课件,基于Linux环境...

    Java Spring Boot 2.0实战Docker容器Linux与架构原理 内容摘要:Docker是最流行的开源容器引擎,Go语言开发,在互联网大规模集群.云计算.微服务等架构中广泛使用.本次课 ...

  6. Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002

    继续上一篇中未翻译完成的部分,主要包括下面三个部分: 1,扩展:WebRTC多方通话. 2,MCU Multipoint Control Unit. 2, 扩展:VOIP,电话,消息通讯. 注意:翻译 ...

  7. SpringCloud实战与原理---快速入门

    SpringCloud实战与原理 第一章  快速入门 1. 初始化工程 2. 启动Eureka注册中心 2.1 Eureka注册中心启动代码 2.2 启动Eureka注册中心 3. 注册Eureka客 ...

  8. flask web开发是前端还是后端_Flask Web开发实战:入门、进阶与原理解析 PDF 全格式版...

    给大家带来的一篇关于Flask相关的电子书资源,介绍了关于Flask.Web.开发实战方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小12.2M,李辉编写,目前豆瓣.亚马逊.当当.京东等 ...

  9. WebRTC入门知识

    1. 什么是WebRTC WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API.它于2011 ...

最新文章

  1. 某大厂程序员哀叹:千万不要从大厂往小厂跳,后悔死了!小厂只会逼迫压榨,刚来就一个劲要产出!...
  2. oracle 游标小例
  3. git 提交失败 HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
  4. Go语言实战读书笔记
  5. Oracle从软件安装到运行的全流程
  6. npm 下载 依赖包时出错的解决方式
  7. 抖音音乐品牌升级 推出“炙热星河”音乐人服务平台
  8. 95-225-040-源码-广播-简介
  9. 3D中国跳棋 —— 记与子禾童鞋的结对编程(附网站地址及完整源码)
  10. 自动化测试--8种定位方式以及等待详解
  11. 首个中国高校AI人才培养计划启动,Hinton、Hopcroft和李开复开班授课
  12. php validate验证用户,PHP validate 数据验证demo
  13. Partition List -- LeetCode
  14. 使用DataSet Datatable 更新数据库的三种方式及DataTable不同状态的取值
  15. logo设计的基础知识
  16. 用php求勾股数,勾股数(示例代码)
  17. 百度获取天气预报接口
  18. Applilet2 for V850ES/Fx3生成代码
  19. 安全性设计之-ip白名单设计
  20. STM32系统时钟树分析

热门文章

  1. 计算机网络名词解释汇总
  2. twisted的一些代码
  3. 【JavaScript】Web APIs基础
  4. 汇编语言学习课程免费送
  5. 数学一本通【数论】小三学算术
  6. 7-19 阶梯电价 (8 分)
  7. window对象的setTimeout、clearTimeout、setInterval、clearInterval方法
  8. 学会Python自动制作PPT,立马在兼职群接到一单
  9. 帝国CMS7.5情书模板/精美情书大全站/同步生成带手机站带采集
  10. 深入浅出 Python 装饰器:16 步轻松搞定 Python 装饰器