1. 什么是WebRTC
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。

WebRTC(Web Real­Time Communication)是 Google于2010以6829万美元从 Global IP Solutions 公司购买,并于
2011年将其开源,旨在建立一个互联网浏览器间的实时通信的平台,让 WebRTC技术成为 H5标准之一。
官网(https://webrtc.org)介绍如下:


从官网上的描述我们可以知道,WebRTC是一个免费的开放项目,它通过简单的API为浏览器和移动应用程序提供实
时通信(RTC)功能。

2. WebRTC框架介绍
我们能从https://webrtc.googlesource.com/看到webrtc所有的代码

架构图颜色标识说明:
(1)紫色部分是Web开发者API层;\color{purple}{紫色部分是Web开发者API层;}紫色部分是Web开发者API层;
(2)蓝色实线部分是面向浏览器厂商的API层(也就是红色框标内模块,也是本人专注研究的部分)\color{blue}{蓝色实线部分是面向浏览器厂商的API层(也就是红色框标内模块,也是本人专注研究的部分)}蓝色实线部分是面向浏览器厂商的API层(也就是红色框标内模块,也是本人专注研究的部分)
(3)蓝色虚线部分浏览器厂商可以自定义实现\color{blue}{蓝色虚线部分浏览器厂商可以自定义实现}蓝色虚线部分浏览器厂商可以自定义实现

详细组件介绍
(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,抽象地对数字信号过程进行处理。

(4) Transport / Session
传输/会话层
会话层组件采用了libjingle库的部分组件实现,无须使用xmpp/jingle协议

a.RTPStack协议栈\color{blue}{a.RTP Stack协议栈}a.RTPStack协议栈
Real Time Protocol

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

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

(5) VoiceEngine

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

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的某些类型的背景噪声(嘶嘶声,风扇噪音等等… …)

f . Opus:支持从6 kbit/s到510 kbit/s的恒定和可变比特率编码,帧大小从2.5 ms到60 ms,各种采样率从8 kHz(4 kHz
带宽)到48 kHz(20 kHz带宽,可复制人类听觉系统的整个听力范围)。由IETF RFC 6176定义。

(6) VideoEngine

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

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

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

c. Image enhancements
图像质量增强模块
对网络摄像头采集到的图像进行处理,包括明暗度检测、颜色增强、降噪处理等功能,用来提升视频质量。

3. 模块细致讲解
WebRTC有三个模块,Voice Engine(音频引擎),Video Engine(视频引擎),Transport。

Voice Engine包含iSAC/iLBC Codec(音频编解码器,前者是针对宽带和超宽带,后者是针对窄带),NetEQ for voice(处理网络抖动和语音包丢失),Echo Canceler(回声消除器),Noise Reduction(噪声抑制);

Video Engine包含VP8 Codec(视频图像编解码器),Video jitter buffer(视频抖动缓冲器,处理视频抖动和视频信息包丢失),Image enhancements(图像质量增强)。

Transport包含SRTP(安全的实时传输协议,用以音视频流传输),Multiplexing(多路复用),P2P,STUN+TURN+ICE(用于NAT网络和防火墙穿越的)。

安全传输可能还会用到DTLS(数据报安全传输),用于加密传输和密钥协商。整个WebRTC通信是基于UDP的

国内方案厂商
声网、即构科技、环信、融云等公司都在基于WebRTC二次开发自己的音视频通话方案。

声网 https://www.agora.io/cn/
即构科技 https://www.zego.im/

WebRTC发展前景
WebRTC虽然冠以“web”之名,但并不受限于传统互联网应用或浏览器的终端运行环境。实际上无论终端运行环境是
浏览器、桌面应用、移动设备(Android或iOS)还是IoT设备,只要IP连接可到达且符合WebRTC规范就可以互通。
这一点释放了大量智能终端(或运行在智能终端上的app)的实时通信能力,打开了许多对于实时交互性要求较高的
应用场景的想象空间,譬如在线教育、视频会议、视频社交、远程协助、远程操控等等都是其合适的应用领域。

全球领先的技术研究和咨询公司Technavio最近发布了题为“全球网络实时通讯(WebRTC)市场,2017­2021”的报
告。报告显示,2017­2021年期间,全球网络实时通信(WebRTC)市场将以34.37%的年均复合增长率增长,增长
十分迅速。增长主要来自北美、欧洲及亚太地区。

WebRTC入门知识相关推荐

  1. Android WebRTC 入门教程(二) -- 模拟p2p本地视频传输

    Android WebRTC 入门教程(一) – 使用相机 Android WebRTC 入门教程(二) – 模拟p2p本地视频传输 源码工程: https://github.com/LillteZh ...

  2. java圆周率流程图,流程图、PI图入门知识 课件.doc

    流程图.PI图入门知识 课件 流程图.PI图入门知识 基本定义 工艺流程图﹙又叫PI图﹚,通过图解的形式,表示出在化工生产过程中,由原料制得产品过程的物料和能量发生的变化及其流向:表示出生产中采用的化 ...

  3. 和与余数的和同余理解_5 同余 ——数论入门知识讲解系列

    数学竞赛 数论是纯粹数学的分支之一,主要研究整数的性质,按研究方法分为初等数论和高等数论.中学生(甚至小学生)课外数学兴趣小组的许多内容是属于初等数论的,各级别数学竞赛也会把初等数论作为重点内容进行考 ...

  4. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  5. oracle入门知识实施,新手必须了解的oracle入门知识

    欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 oracle入门知识 一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上) 每个数 ...

  6. ruby网站部署到服务器,入门知识: 把代码部署到服务器, SSH

    入门知识: 把代码部署到服务器, SSH 2015-07-28 16:28 访问量: 2868 分类: 技术 如何登陆远程服务器呢? $ ssh root@your.server.com -p 334 ...

  7. python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  8. 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python就业前景广阔.很多 ...

  9. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

最新文章

  1. 面试官:说说Spring Cloud底层原理?
  2. 核函数K(kernel function)
  3. NR 5G 安全架构概述
  4. 关于UC、火狐、谷歌浏览器屏蔽布局中广告的解决办法
  5. colspan会影响内部单元格宽度失效_电感失效分析
  6. PostgreSQL 分页——示例
  7. 西门子逻辑运算指令_西门子S7-200 SMART逻辑运算指令应用实例
  8. Django构建简介
  9. 大幅提高Android开发效率之TemplateBuilder
  10. 学习笔记-模块之xml文件处理
  11. Python 读取/保存 图片,发现有色差,可以怎么解决了?
  12. Nik Collection 4
  13. PD QC充电器XP06诱骗取电9V 12V 15V 20V原理
  14. VUE+Canvas实现雷霆战机打字类小游戏
  15. 2021 字节前端面试题汇总
  16. java 7 new feature
  17. 【读点论文】EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks网络结构要像身材一样匀称且体量和处理能力匹配
  18. git push的时候报错:error: src refspec xxxxx does not match any. 错误原因和解决方法
  19. 亿速云服务器 如何上传文件,使用MultipartFile怎么实现一个文件上传功能
  20. 为了救自己,天涯和简书做起了区块链,新闻媒体呢?

热门文章

  1. perl,shell中如何打印出处理sql语句变量的单引号
  2. 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一第一篇 执行计划
  3. Ubuntu 安装 Java EE
  4. 大数据分析-时间序列(pandas库 )
  5. Twproject Gantt – 开源的 JavaScript 甘特图组件
  6. java堆排序图解_108-堆排序的思路图解_清华毕业老程序员亲授通俗易懂的Java数据结构和算法​​​​教程_Java视频-51CTO学院...
  7. 【Nokov】关于动捕系统获取刚体姿态的说明
  8. 【机器学习】隐马尔可夫模型及其三个基本问题(二)观测序列概率计算算法及python实现
  9. 机器学习--组合分类方法之AdaBoost算法实战(单层决策树原理代码详解)
  10. javacore分析工具_线上死锁定位分析