
本门课程目的:帮助更多的学员入门WebRTC
腾讯课堂零声学院《WebRTC入门与提高》https://ke.qq.com/course/435382?quicklink=1
咨询QQ群:782508536
以下是课程的部分文档
本门课程分为以下章节:
1.WebRTC入门
2.WebRTC开发环境搭建
3.Coturn穿透和转发服务器搭建
4.音视频采集和播放
5.Nodejs实战
6.手把手实现音视频一对一通话

7.开源方案介绍
8.AppRTC开源方案搭建
1WebRTC入门
本章目的:
1.了解什么WebRTC
2.掌握WebRTC通话原理
3.学完该课程的收获
1.1什么是WebRTC
WebRTC(WebRealTimeCommunication)是Google于2010以6829万美元从GlobalIPSolutions公司购买,并
于2011年将其开源,旨在建立一个互联网浏览器间的实时通信的平台,让WebRTC技术成为H5标准之一。我们看官
网(https://webrtc.org)的介绍
从官网上的描述我们可以知道,WebRTC是一个免费的开放项目,它通过简单的API为浏览器和移动应用程序提供实
时通信(RTC)功能。
1.2WebRTC框架

上图的框架对于不同的开发人员关注点不同:
(1)紫色部分是Web应用开发者API层
(2)蓝色实线部分是面向浏览器厂商的API层
(3)蓝色虚线部分浏览器厂商可以自定义实现
特别是图中的PeerConnection为Web开发人员提供了一个抽象,从复杂的内部结构中抽象出来。我们只需要关注
PeerConnection这个对象即可以开发音视频通话应用内。
WebRTC架构组件介绍
YourWebApp
Web开发者开发的程序,Web开发者可以基于集成WebRTC的浏览器提供的webAPI开发基于视频、音频的实时通信
应用。
WebAPI
面向第三方开发者的WebRTC标准API(Javascript),使开发者能够容易地开发出类似于网络视频聊天的web应用,
最新的标准化进程可以查看这里。
WebRTCNativeC++API

本地C++API层,使浏览器厂商容易实现WebRTC标准的WebAPI,抽象地对数字信号过程进行处理。
Transport/Session
传输/会话层
会话层组件采用了libjingle库的部分组件实现,无须使用xmpp/jingle协议
VoiceEngine
音频引擎是包含一系列音频多媒体处理的框架。
PS:VoiceEngine是WebRTC极具价值的技术之一,是Google收购GIPS公司后开源的。在VoIP上,技术业界领先。
Opus:支持从6kbit/s到510kbit/s的恒定和可变比特率编码,帧大小从2.5ms到60ms,各种采样率从8kHz(4kHz
带宽)到48kHz(20kHz带宽,可复制人类听觉系统的整个听力范围)。由IETFRFC6176定义。
NetEQ模块是Webrtc语音引擎中的核心模块,一种动态抖动缓冲和错误隐藏算法,用于隐藏网络抖动和数据包丢失
的负面影响。保持尽可能低的延迟,同时保持最高的语音质量。
VideoEngine
WebRTC视频处理引擎
VideoEngine是包含一系列视频处理的整体框架,从摄像头采集视频到视频信息网络传输再到视频显示整个完整过程
的解决方案。
VP8视频图像编解码器,是WebRTC视频引擎的默认的编解码器
VP8适合实时通信应用场景,因为它主要是针对低延时而设计的编解码器。
1.3WebRTC发展前景
WebRTC虽然冠以“web”之名,但并不受限于传统互联网应用或浏览器的终端运行环境。实际上无论终端运行环境是
浏览器、桌面应用、移动设备(Android或iOS)还是IoT设备,只要IP连接可到达且符合WebRTC规范就可以互
通。这一点释放了大量智能终端(或运行在智能终端上的app)的实时通信能力,打开了许多对于实时交互性要求较
高的应用场景的想象空间,譬如在线教育、视频会议、视频社交、远程协助、远程操控等等都是其合适的应用领域。
全球领先的技术研究和咨询公司Technavio最近发布了题为“全球网络实时通讯(WebRTC)市场,20172021”的报
告。报告显示,20172021年期间,全球网络实时通信(WebRTC)市场将以34.37%的年均复合增长率增长,增长
十分迅速。增长主要来自北美、欧洲及亚太地区。
1.4国内方案厂商
声网、即构科技、环信、融云等公司都在基于WebRTC二次开发自己的音视频通话方案。
声网https://www.agora.io/cn/
即构科技https://www.zego.im/

1.5WebRTC通话原理
首先思考的问题:两个不同网络环境的(具备摄像头/麦克风多媒体设备的)浏览器,要实现点对点的实时音视频对
话,难点在哪里?
1.媒体协商
彼此要了解对方支持的媒体格式
比如:PeerA端可支持VP8、H264多种编码格式,而PeerB端支持VP9、H264,要保证二端都正确的编解码,最简
单的办法就是取它们的交集H264
注:有一个专门的协议,称为SessionDescriptionProtocol(SDP),可用于描述上述这类信息,在WebRTC中,参
与视频通讯的双方必须先交换SDP信息,这样双方才能知根知底,而交换SDP的过程,也称为"媒体协商"。
2.网络协商
彼此要了解对方的网络情况,这样才有可能找到一条相互通讯的链路
先说结论:(1)获取外网IP地址映射;(2)通过信令服务器(signalserver)交换"网络信息"
理想的网络情况是每个浏览器的电脑都是私有公网IP,可以直接进行点对点连接。