《WebRTC技术详解 从0到1构建多人视频会议系统》栗伟作|(epub+azw3+mobi+pdf)电子书下载

图书名称:《WebRTC技术详解 从0到1构建多人视频会议系统》

【作 者】栗伟作
【页 数】 310
【出版社】 北京:机械工业出版社 , 2021.05
【ISBN号】978-7-111-67844-1
【分 类】移动终端-应用程序-程序设计
【参考文献】 栗伟作. WebRTC技术详解 从0到1构建多人视频会议系统. 北京:机械工业出版社, 2021.05.

图书封面:

图书目录:

《WebRTC技术详解 从0到1构建多人视频会议系统》内容提要:

这是一本全面、详细讲解WebRTC技术以及如何使用它构建一个可商用的视频会议系统的著作。 在技术维度,本书不仅详细讲解了WebRTC规范和全部API、信令系统、底层技术、移动端、服务端实现,还总结了作者多年来的“踩坑”经验;在实战维度,本书不仅提供了可直接应用于视频会议和在线教育等场景的真实案例,还开源了一个可商用的视频会议系统WiLearning,教读者如何从0到1搭建一个高并发、易扩展的视频会议系统。 全书一共10章。 第1章介绍了WebRTC的历史、技术架构、网络拓扑、兼容性等内容。 第2章讲解了使用WebRTCAPI获取本地摄像头、话筒、桌面等媒体流的方法以及媒体流的录制、使用canvas操作媒体流的方法和示例。 第3章讲解了WebRTC底层使用的传输技术,如ICE、SDP、STUNTURN等。 第4章介绍了使用RTCPeerConnection管理WebRTC连接的方法。 第5章介绍了WebRTC的媒体管理方法,结合示例演示了切换编码格式、控制视频码率、替换视频背景的方法。 第6章结合示例介绍了一种高效、实时的信令系统实现方法,并实现了一个可以在生产环境中使用的信令系统。 第7章介绍了使用WebRTC数据通道传输任意数据的方法,结合示例演示了基于P2P的文本聊天以及文件传输功能的实现。 第8章介绍了使用WebRTC获取媒体流相关统计数据的方法,在示例中演示如何使用Chart.js绘图展示实时码率。 第9章介绍了在Android、iOS开发环境中使用WebRTC的方法,通过实例实现了基于WebRTC的视频聊天App。 第10章结合笔者的开源项目WiLearning介绍了从O到1打造高性能视频会议系统的方法。

《WebRTC技术详解 从0到1构建多人视频会议系统》内容试读

单■路每■型鞋■后组图■■

■程层■通■■图■里

意■题

第1章

Choder 1

VebRTC概述

随着网络基础设施日趋完善以及终端计算能力不断提升,实时通信技术已经渗透到各行各业,支撑着人们的日常生活。在WebRTC诞生之前,实时通信技术非常复杂,想获得核心的音视频编码及传输技术需要支付昂贵的专利授权费用。此外,将实时通信技术与业务结合也非常困难,并且很耗时,通常只有较大规模的公司才有能力实现。

WebRTC的出现使实时通信技术得以广泛应用。WebRTC制定、实现了一套统一且完整的实时通信标准,并将这套标准开源。这套标准包含了实时通信技术涉及的所有内容,使用这套标准,开发人员无须关注音视频编解码、网络连接、传输等底层技术细节,可以专注于构建业务逻辑,且这些底层技术是完全免费的。

WebRTC统一了各平台的实时通信技术,大部分操作系统及浏览器都支持WebRTC,无须安装任何插件,就可以在浏览器端发起实时视频通话。

WebRTC技术最初为Web打造,随着WebRTC自身的演进,目前已经可以将其应用于各种应用程序。

随着4G的普及和5G技术的应用,实时音视频技术正在蓬勃发展。在互联网领域,花

椒、映客等直播平台吸引了大量的用户;在教育领域,通过实时直播技术搭建的“空中课堂”惠及全球数亿学生;在医疗行业,随着电子处方单纳入医保,互联网看病、复诊正在兴起,地域之间医疗资源不均衡的问题被实时直播技术逐步消除。

WebRTC 1.0规范发布以来,以Chrome、Firefox为代表的浏览器对WebRTC提供了全方面的支持,Safari 11也开始对WebRTC提供支持。

1.1 VebRTC的历史

WebRTC(Web Real-Time Communication)是一个谷歌开源项目,它提供了一套标准

2 WebRTC技术详解:从0到1构建多人视频会议系统

API,使Wb应用可以直接提供实时音视频通信功能,不再需要借助任何插件。原生通信

过程采用P2P协议,数据直接在浏览器之间交互,理论上不需要服务器端的参与。

“为浏览器、移动平台、物联网设备提供一套用于开发功能丰富、高质量的实时音视频应用的通用协议”是WebRTC的使命。

WebRTC的发展历史如下。

口2010年5月,谷歌收购视频会议软件公司GIPS,该公司在RTC编码方面有深厚的

技术积累。

口2011年5月,谷歌开源WebRTC项目。

口2011年10月,W3C发布第一个WebRTC规范草案。

口2014年7月,谷歌发布视频会议产品Hangouts,该产品使用了WebRTC技术。口2017年l1月,WebRTC进入候选推荐标准(Candidate Recommendation,CR)阶段。

1.2 VebRTC的技术架构

从技术实现的角度讲,在浏览器之间进行实时通信需要使用很多技术,如音视频编解

码、网络连接管理、媒体数据实时传输等,还需要提供一组易用的API给开发者使用。这

些技术组合在一起,就是WebRTC技术架构,如图1-1所示。

WebRTC Web端

WebRTC移动端

Web API

libwebrtc

WebRTC C++API

会话管理信令

音频

视频

媒体传输

RTP/SRTR/SCTP

OPUS/G.711PCM编码

VP8/H264编码

TURN/STUN

回音消除

Jitter Buffer

ICE/SDP

降噪

图像增强

DTLS/UDP

音频采集

视频采集

网络VO

图I-1 WebRTC技术架构

WebRTC技术架构的顶层分为两个部分。一部分是Web API,一组JavaScript接口,由

第1章WebRTC概述5

种情况下如何确保会话质量呢?使用MCU时,这个问题相对简单一些。MCU可以根据参

与者的网络质量和设备能力,提供不同的清晰度和码率。但是随之而来的问题是服务器资源压力较大,难以支撑大规模并发,同时也显著增加了使用成本。

多人会话场景选择SFU网络结构是目前通用的做法。早期的SFU只是将媒体流从发送

端转发给接收端,无法独立为不同参与者调整视频码率,其结果是发送者需要自行调整码率,以适应接收条件最差的参与者。而那些网络环境较好的参与者只能接收相同质量的媒体流,别无选择。

Simulcast技术对SFU进行了优化,发送端可以同时发送多个不同质量的媒体流给接收

端。SFU能够依据参与者的网络质量,决定转发给参与者哪种质量的媒体流。

因为发送者需要发送多个不同质量的媒体流,所以会显著增加发送设备的载荷,同时占用发送者上行带宽资源。

1.5可伸缩视频编码

可伸缩视频编码(Scalable Video Coding,SVC)是Simulcast的改进技术。它使用分层

编码技术,发送端只需要发送一个独立的视频流给SFU,SFU根据不同的层,解码出不同

质量的视频流,并发送给不同接收条件的参与者。

SVC中多个层次的媒体流相互依赖,较高质量的媒体数据需要较低质量的媒体数据解

码。SFU接收到SVC编码的内容后,根据客户端的接收条件选择不同的编码层次,从而获

得不同质量的媒体流

如果媒体流包括多个不同分辨率的层,则称该编码具有空间可伸缩性:如果媒体流包含多个不同帧率的层,则称该编码具有时间可伸缩性;如果媒体流包含多个不同码率的层,则称该编码具有质量可伸缩性。

在编码空间、时间、质量均可伸缩的情况下,SFU可以生成不同的视频流,以适应不

同客户端的接收条件。

1.6

VebRTC的兼容性

据caniuse.com统计,大部分浏览器都实现了对WebRTC的支持,各浏览器支持情况如下。

▣Firefox版本22+

▣Chrome版本23+

▣Safari版本1l+▣iOS Safari版本ll+▣Edge版本15+

6 WebRTC技术详解:从0到1构建多人视频会议系统

口Opera版本18+

▣Android Browser版本81+▣Chrome for Android版本84+▣Firefox for Android版本68+

口IE不支持

Android和iOS原生应用都支持WebRTC,可以使用原生SDK开发跨平台的WebRTC应用。

Android WebView自36版本之后,提供了对WebRTC的支持,这意味可以使用WebRTCAPI开发Android混合App。注意,一些手机厂商对部分Android版本里的WebView进行了裁剪,导致不能使用WebRTC,这时候下载并安装最新的WebView即可

iOS WebView目前还不支持WebRTC,但是可以使用cordova的插件cordova-plugin-iosrte在混合App中使用WebRTC。

WebRTC目前处于活跃开发阶段,各个浏览器的实现程度不一样。为了解决兼容性的问题,谷歌提供了adapter..js库。

在GitHub上可以下载最新版本的adapter.js库,地址如下所示。

https://github.com/webrtc/adapter/tree/master/release将下载的文件放到Web服务器根目录,在Web应用中引用。

1.7

其他直播技术

在WebRTC流行之前,低延迟的直播技术就已经普及了。这些技术一般包括用于互

联网直播的RTMP协议、用于监控领域的RTSP协议,还有一些较新的协议,如SRT和

QUIC。WebRTC由多个传输协议构成,实际上是一套实时通信技术的解决方案,而其他直播技术则大多以单独协议的形成存在。

1.实时消息传输协议

实时消息传输协议(Real Time Messaging Protocol,.RTMP)基于TCP,最初由Macro-media公司开发,并于2005年被Adobe收购。它包括RTMP基本协议及RTMPT、RTMPS、RTMPE等多个变种。RTMP是一种实时数据通信网络协议,主要用来在Flash/AIR平台和

支持RTMP协议的流媒体/服务器之间进行音视频和数据通信。RTMP与HTTP一样,都

属于TCPP四层模型的应用层。

RTMP协议的应用非常广泛,至今仍是最常用的直播传输协议之一,大多数流媒体平

台和软件都支持RTMP协议

传统的RTMP延迟较高,通常延迟5~20s,经过优化,延迟可以降低到2~3s。如

···试读结束···

阅读剩余
THE END