首页>参考读物>计算机科学与技术>软件与程序设计

WebRTC技术详解:从0到1构建多人视频会议系统
作者 : 栗伟
出版日期 : 2021-04-09
ISBN : 978-7-111-67844-1
定价 : 99.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 320
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

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

图书特色

资深音视频技术专家撰写,详解WebRTC规范、API、信令系统、底层技术、移动端和服务端实现,集大成之作
开源可商用视频会议系统,书中示例可直接应用于视频会议、
在线教育等实时音视频场景

图书前言

为什么要写这本书
最早接触WebRTC技术是在2015年,那时需要在直播产品中增加实时连麦的功能,经过对几种技术进行对比,最终我选择了WebRTC。当时WebRTC技术还不够成熟,相关资料非常少,在产品中使用WebRTC技术的难度非常大,往往为了弄清楚某个概念、某个API的用法,需要查阅大量的英文资料,而且遇到问题解决起来非常棘手。
从最初的原生WebRTC,到多点控制单元(MCU),再到各种选择性转发单元(SFU),我在使用WebRTC的过程中一直不断学习新的知识,不断解决新的问题,同时也逐步加深了对WebRTC技术的理解和认识。
因为踩过许多坑,所以我深刻体会到了WebRTC技术的难度和广度。WebRTC技术包含了音视频编解码技术、传输技术、流媒体服务器技术等,涵盖了音视频处理和传输的方方面面。这些技术中任意一个都能成为独立的课题,都值得花大量时间深入研究。除此之外,理解WebRTC相关API,还必须掌握现代Web技术,尤其是ES6、Promise等语法知识。可见,学习WebRTC技术需要掌握大量的预备知识,这对于初学者来说有一定的门槛。
非常遗憾的是,时至今日仍没有一本中文书能够系统地涵盖WebRTC的技术内容,剥离层层技术面纱将WebRTC呈现给国内技术人员。
在实时通信产品大爆发的时期,为什么WebRTC的中文技术资料如此之少?我想可能有以下几个原因。
WebRTC技术规范都是英文文档,缺少使用示例,故而读起来晦涩难懂,加大了WebRTC的学习难度。
WebRTC技术较新,专业性较强,能真正理解并掌握其精髓的技术人员较少。
国内技术人员工作压力大,资深WebRTC技术人员忙于项目,没有时间总结经验并分享。
WebRTC技术覆盖面广,难以讲深、讲透,针对某个技术点的分享容易实现,但要系统讲解技术内幕则非常难。
撰写一本能够降低国内技术人员使用WebRTC的门槛,能够帮助研发人员更好地将WebRTC技术应用到产品中的书,是我编写本书的出发点。
作为一名较早使用WebRTC的技术人员,我一直关注WebRTC技术的发展,在日常使用过程中积累了大量学习笔记和经验,这些都为撰写本书提供了素材。
本书对WebRTC 1.0规范的内容进行了系统整理,以一种易于理解的形式呈现给读者。书中还给出了我的“踩坑”经验和一些实用的案例,帮助读者全面认识WebRTC。
WebRTC降低了实时通信技术的门槛,使得之前只有互联网巨头才能掌握的实时通信技术得以普及,使得我们能够在家远程办公,孩子们能够“停课不停学”。相信在5G普及之后,WebRTC还会迎来更加蓬勃的发展。
可以预见,未来将有更多技术人员学习并应用WebRTC,希望本书能够帮助大家轻松踏入WebRTC的技术殿堂!
读者对象
实时通信产品的售前、售后、研发人员,音视频行业的架构师、CTO等。
本书特色
全面涵盖WebRTC 1.0规范。
详细讲解WebRTC底层技术。
结合示例演示WebRTC API的使用。
从零起步实现高效、实时的信令系统。
使用WebRTC技术从0到1打造开源视频会议系统。
如何阅读本书
本书对WebRTC技术进行了全面的介绍,涵盖WebRTC 1.0规范全部API、WebRTC底层技术、WebRTC在移动端和服务器端的应用等内容,并提供了具体的示例,力求做到理论结合实践。本书最后使用这些WebRTC知识打造了一个真实的视频会议系统,同时对高并发、易扩展的视频会议架构进行了详细讲解。
本书分为10章。
第1章介绍WebRTC的历史、技术架构、兼容性等内容。
第2章介绍使用WebRTC API获取本地摄像头、话筒、桌面等媒体流的方法,以及媒体流的录制、使用canvas操作媒体流的方法和示例。
第3章介绍WebRTC底层使用的传输技术,如SDP、ICE、STUN/TURN等。
第4章介绍使用RTCPeerConnection管理WebRTC连接的方法。
第5章介绍WebRTC的媒体管理方法,结合示例演示切换编码格式、控制视频码率、替换视频背景的方法。
第6章结合示例介绍一种高效、实时的信令系统实现方法,并实现一个可以在生产环境中使用的信令系统。
第7章介绍使用WebRTC数据通道传输任意数据的方法,结合示例演示基于P2P的文字聊天以及文件传输功能的实现。
第8章介绍使用WebRTC获取媒体流相关统计数据的方法,结合示例演示如何使用Chart.js绘图展示实时码率。
第9章介绍在Android、iOS开发环境中使用WebRTC的方法,并实现基于WebRTC的视频聊天App。
第10章结合我的开源项目WiLearning介绍从0到1打造视频会议系统的方法。
本书提供的示例代码以及开源项目WiLearning可以在GitHub上免费获取,地址为https://github.com/wistingcn。
致谢
感谢我的家人,他们给我提供了最大的支持。在写书期间,我每天早出晚归,没有一个完整的周末,我的爱人承担起了所有的家务。还有我两个可爱的小天使,每天晚上回到家里,她们都会跑过来喊着:“欢迎爸爸回来!”这是我一天中最开心的时刻,所有的疲劳和烦恼都一扫而光。
感谢开源社区贡献了WebRTC这样一个优秀的实时音视频框架。正是出于回馈开源社区的愿景,我才投入了大量的精力开发WiLearning。
感谢机械工业出版社的杨福川和各位编辑为我写书提供了指导,并不辞劳苦地修订、校稿。
谨以此书献给我最亲爱的家人以及众多热爱WebRTC技术的朋友们!

上架指导

计算机\程序设计

封底文字

WebRTC提供了一套实时通信标准,使得实时通信技术深入各行各业,也深深影响着人们的生活方式。视频会议、在线教育、远程医疗这些行业都在应用WebRTC,随着5G技术的普及,WebRTC技术将更加快速地发展。
——宗劼  金山云CDN及视频云产品中心总经理

随着WebRTC技术、服务和生态的不断完善,实时音视频通信将成为重要的视频基础设施,也必然会催生更多、更新的应用。然而,市场上一直缺少一本对WebRTC技术由浅入深进行系统化介绍、辅导开发者搭建典型应用的书。本书由音视频领域资深技术专家撰写,每章都有亮点,是一本WebRTC必读之作。
——楼剑  阿里云资深音视频专家

从概念的诞生,到产业应用纷纷落地,WebRTC技术和服务已经改变了OSI网络的实时音视频传输方式。栗伟是音视频网络传输领域的专家,他通过本书将WebRTC由浅入深、层层递进地展现在读者面前,相信读者一定会有全新的收获。
——苗权  观脉科技CTO

实时音视频通信是在线教育的核心技术,其稳定性和实时性对业务的影响很大。随着WebRTC技术的发展和完善,必然会有更广泛的应用,然而介绍WebRTC技术的书太少了。这是一本难得的对WebRTC技术进行系统性讲解的书,作者栗伟是音视频领域的资深技术专家,书中融入了他对这项技术多年的研究和积累,推荐阅读。
——赵峰  质心教育CTO

视频直播的兴起对于WebRTC来说是一次很好的机遇,淘宝直播也是基于WebRTC实现的一秒内低延迟直播。从技术角度来看,国内对于实时音视频通信技术的研究还不够深入,很多技术内容仅有英文版本。栗伟是音视频领域的资深专家,他的这本书系统地介绍了WebRTC的相关知识,推荐广大技术爱好者阅读。
——汤向军  蒙商消费金融总经理助理

作者简介

栗伟:作者简介
栗伟
资深音视频技术专家,在该领域有多年实践经验,对WebRTC有非常深入的研究。
曾任职于中科院计算所、CC视频,任职期间利用WebRTC技术开发了直播、在线课堂、视频会议等商业产品,并发用户数达到500万。
开源社区的积极参与者,在GitHub上开源了视频会议项目WiLearning,免费供中小企业使用。

图书目录


前言
第1章 WebRTC概述1
1.1 WebRTC的历史1
1.2 WebRTC的技术架构2
1.3 WebRTC的网络拓扑3
1.4 Simulcast联播4
1.5 可伸缩视频编码5
1.6 WebRTC的兼容性5
1.7 其他直播技术6
1.8 统一计划与Plan B8
1.9 本章小结9
第2章 本地媒体10
2.1 媒体流10
2.1.1 构造媒体流11
2.1.2 MediaStream属性11
2.1.3 MediaStream方法11
2.1.4 MediaStream事件14
2.2 媒体轨道15
2.2.1 MediaStreamTrack属性15
2.2.2 MediaStreamTrack方法17
2.2.3 MediaStreamTrack事件20
2.3 媒体约束22
2.3.1 约束类型22
2.3.2 数据类型与用法23
2.3.3 通用约束25
2.3.4 视频约束25
2.3.5 音频约束25
2.3.6 屏幕共享约束26
2.3.7 图像约束26
2.3.8 约束的advanced属性27
2.4 媒体设备28
2.4.1 WebRTC隐私和安全28
2.4.2 获取摄像头与话筒29
2.4.3 共享屏幕30
2.4.4 查询媒体设备31
2.4.5 监听媒体设备变化33
2.5 从canvas获取媒体流34
2.6 从媒体元素获取媒体流34
2.7 播放媒体流35
2.8 录制媒体流36
2.8.1 构造MediaRecorder36
2.8.2 MediaRecorder属性37
2.8.3 MediaRecorder方法39
2.8.4 MediaRecorder事件42
2.9 示例45
2.9.1 代码结构45
2.9.2 获取图片像素数据46
2.9.3 替换视频背景47
2.10 本章小结48
第3章 传输技术49
3.1 RTP49
3.2 RTCP52
3.3 SRTP/SRTCP54
3.4 TLS/DTLS55
3.5 SDP55
3.6 ICE57
3.7 搭建STUN/TURN服务器63
3.8 本章小结65
第4章 连接管理66
4.1 WebRTC建立连接的过程66
4.1.1 会话描述信息RTCSession-Description69
4.1.2 pending状态与current状态70
4.1.3 ICE候选者RTCIceCandidate70
4.2 RTCPeerConnection接口72
4.2.1 构造函数RTCPeerConnection73
4.2.2 连接配置RTCConfiguration74
4.2.3 RTCPeerConnection接口的属性76
4.2.4 RTCPeerConnection接口的方法82
4.2.5 RTCPeerConnection接口的事件90
4.3 完美协商模式94
4.3.1 SDP冲突问题95
4.3.2 使用完美协商模式95
4.3.3 再谈ICE重启97
4.4 示例98
4.4.1 运行示例98
4.4.2 使用WebSocket99
4.4.3 创建RTCPeerConnection的时机100
4.5 本章小结102
第5章 RTP媒体管理103
5.1 WebRTC编解码104
5.2 RTCPeerConnection RTP扩展110
5.2.1 RTCPeerConnection扩展方法111
5.2.2 RTCPeerConnection扩展事件113
5.3 传输媒体流114
5.3.1 无流轨道115
5.3.2 有流轨道115
5.4 RTP收发管理116
5.4.1 RTCRtpTransceiver属性117
5.4.2 RTCRtpTransceiver方法118
5.5 RTP发送器118
5.5.1 RTCRtpSender属性119
5.5.2 RTCRtpSender方法119
5.6 RTP接收器123
5.6.1 RTCRtpReceiver属性123
5.6.2 RTCRtpReceiver方法123
5.7 DTLS传输层126
5.7.1 RTCDtlsTransport属性126
5.7.2 RTCDtlsTransport方法127
5.7.3 RTCDtlsTransport事件127
5.8 ICE传输层128
5.8.1 RTCIceTransport属性128
5.8.2 RTCIceTransport方法130
5.8.3 RTCIceTransport事件132
5.9 使用DTMF134
5.9.1 RTCDTMFSender属性134
5.9.2 RTCDTMFSender方法135
5.9.3 RTCDTMFSender事件135
5.10 RTC错误处理136
5.11 通话的挂起与恢复137
5.11.1 通话挂起137
5.11.2 通话恢复138
5.12 示例139
5.12.1  动态设置视频码率140
5.12.2  使用VP9和H264141
5.12.3 使用虚拟背景144
5.13 本章小结145
第6章 信令服务器146
6.1 使用Node.js147
6.2 使用TypeScript156
6.3 使用Express164
6.4 使用Socket.IO173
6.5 实现信令服务器179
6.6 实现信令客户端186
6.7 示例189
6.8 本章小结191
第7章 数据通道192
7.1 SCTP192
7.2 RTCPeerConnection数据通道扩展接口196
7.3 RTCSctpTransport199
7.4 RTCDataChannel200
7.5 带内协商与带外协商206
7.6 文字聊天与文件传输206
7.7 本章小结216
第8章 统计数据217
8.1 统计数据入口217
8.2 RTCStats及其扩展219
8.3 实时码率监测241
8.3.1 使用Chart.js242
8.3.2 获取码率数据244
8.4 本章小结247
第9章 移动端WebRTC248
9.1 原生应用与混合应用248
9.2 原生开发环境249
9.2.1 Android原生开发环境249
9.2.2 iOS原生开发环境250
9.3 WebView251
9.4 Cordova252
9.4.1 编译环境253
9.4.2 全局配置config.xml254
9.4.3 应用程序行为preference258
9.4.4 应用程序图标icon261
9.4.5 简单的WebRTC移动应用264
9.4.6 调试Cordova应用267
9.5 Ionic Framework268
9.5.1 安装与使用269
9.5.2 开发工具269
9.6 基于Ionic的WebRTC移动应用270
9.6.1 使用模板创建应用程序271
9.6.2 首页组件272
9.6.3 连接管理服务275
9.6.4 视频与聊天组件281
9.6.5 构建Android应用程序283
9.6.6 构建iOS应用程序285
9.7 本章小结286
第10章 从0到1打造多人视频会议系统287
10.1 整体设计287
10.2 媒体服务器289
10.2.1 OWT289
10.2.2 Kurento289
10.2.3 Janus290
10.2.4 Mediasoup291
10.2.5 媒体服务器的选择291
10.3 Mediasoup信令交互过程293
10.4 服务器端实现294
10.4.1 房间与参与者295
10.4.2 管理与监控接口296
10.5 客户端实现298
10.5.1 发布媒体流298
10.5.2 订阅媒体流301
10.5.3 共享桌面303
10.5.4 共享本地媒体303
10.5.5 文档及白板304
10.5.6 文字聊天307
10.6 传输质量监控308
10.7 从网络故障中恢复309
10.8 本章小结310

教学资源推荐
作者: [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)著
作者: 尹宝林
作者: 陈秋劲
参考读物推荐
作者: [印度]纳拉扬·普鲁斯蒂(Narayan Prusty) 著
作者: 罗冰 著
作者: [瑞士]路易斯·汤斯顿(Lewis Tunstall),[瑞士]莱安德罗·冯·韦拉(Leandro von Werra),[法]托马斯·沃尔夫(Thomas Wolf) 著
作者: [美] 布迪·克尼亚万(Budi Kurniawan)著