《WebRTC音视频实时互动技术》简介:

本书深入浅出的对WebRTC技术进行了系统讲解,既有原理又有实战,从WebRTC是如何实现实时音视频通信的,到如何应用WebRTC库实现音视频通信,再到WebRTC的剖析,逐步展开讲解。此外,本书对WebRTC的传输系统进行了重点分析,相信读者可以通过本书一窥WebRTC传输的奥秘。

书中的1~3章介绍了音视频实时通信的由来,WebRTC做了什么,以及它要解决什么问题;4~10章是实战部分,介绍如何使用WebRTC库实现音视频通信,并对其实现原理进行了讲解;第11~13章是对WebRTC源码的分析,让读者对WebRTC有更深层次的认知。

想了解WebRTC实现的专业开发人员可以通过本书了解WebRTC的运转机理;学生、老师和音视频爱好者可以通过本书了解WebRTC做什么,如何通过WebRTC实现音视频的实时通信。

《WebRTC音视频实时互动技术》目录:

第 1 章 音视频直播的前世今生 1
1.1 音视频的历史 1
1.2 移动互联网 3
1.3 音视频直播的两条技术路线 3
1.4 音视频直播的现状 5
1.5 音视频直播的未来 6
1.6 小结 7
第 2 章 为什么要使用 WebRTC8
2.1 自研直播客户端架构8
2.1.1 拆分音视频模块 9
2.1.2 跨平台 10
2.1.3 插件化管理11
2.1.4 其他 13
2.2 WebRTC 客户端架构14
2.3 小结 16
第 3 章 音视频实时通信的本质 17
3.1 两种指标 18
3.1.1 实时通信延迟指标 18
3.1.2 音视频服务质量指标 19
3.2 实时通信的主要矛盾 20
3.2.1 增加带宽 20
3.2.2 减少数据量22
3.2.3 适当增加时延 24
3.2.4 提高网络质量 24
3.2.5 快速准确地评估带宽 25
3.3 小结 25
第 4 章 构建WebRTC一对一信令服务器 27
4.1 WebRTC 一对一架构27
4.2 细化架构 28
4.3 信令 29
4.3.1 信令定义 29
4.3.2 信令时序 30
4.3.3 信令传输协议的选择 31
4.4 构建信令服务器 31
4.4.1 信令服务器的实现方案32
4.4.2 信令服务器的业务逻辑32
4.4.3 信令服务器的实现 33
4.4.4 信令服务器的安装与部署 35
4.4.5 信令服务器的完整代码37
4.5 小结 40
第 5 章 WebRTC 实现一对一通信 41
5.1 浏览器对 WebRTC 的支持41
5.2 遍历音视频设备 42
5.3 采集音视频数据 44
5.4 MediaStream 与 MediaStreamTrack 47
5.5 本地视频预览47
5.6 信令状态机 49
5.7 RTCPeerConnection52
5.7.1 创建 RTCPeerConnection 对象 52
5.7.2 RTCPeerConnection 与本地 音视频数据绑定 53
5.7.3 媒体协商 54
5.7.4 ICE 55
5.7.5 SDP 与 Candidate 消息的 交换 57
5.7.6 远端音视频渲染 58
5.7.7 客户端完整例子 59
5.8 小结 82
第 6 章 WebRTC 中的 ICE 实现 83
6.1 Candidate 种类与优先级83
6.2 ICE 策略 85
6.3 P2P 连接 87
6.3.1 完全锥型 NAT 89
6.3.2 IP 限制锥型 NAT90
6.3.3 端口限制锥型 NAT 91
6.3.4 对称型 NAT92
6.3.5 NAT 类型检测 93
6.3.6 如何进行 NAT 穿越 97
6.4 网络中继 101
6.4.1 TURN 协议中转数据 101
6.4.2 WebRTC 使用 TURN 协议 102
6.4.3 STUN/TURN 服务器的 安装与部署103
6.5 小结 105
第 7 章 WebRTC 中的 SDP 106
7.1 SDP 标准规范106
7.2 WebRTC 中 SDP 的整体 结构 108
7.3 媒体信息 110
7.3.1 音频媒体信息 111
7.3.2 视频媒体信息 112
7.3.3 SSRC 与 CNAME 114
7.4 PlanB 与 UnifiedPlan 115
7.5 WebRTC 如何保证数据 安全 117
7.6 RTP 扩展头 119
7.7 服务质量 120
7.8 SDP 详解 122
7.9 ORTC 131
7.10 小结 131
第 8 章 各端的互联互通 132
8.1 WebRTC Native 的核心 132
8.2 Android 端的实现 134
8.2.1 申请权限 134
8.2.2 引入 WebRTC 库 136
8.2.3 构造 PeerConnection- Factory 138
8.2.4 创建音视频源 138
8.2.5 视频采集 139
8.2.6 视频渲染 142
8.2.7 创建 PeerConnection 144
8.2.8 建立信令系统 146
8.3 iOS 端的实现146
8.3.1 申请权限 146
8.3.2 引入 WebRTC 库 147
8.3.3 构造 RTCPeerConnection- Factory 148
8.3.4 创建音视频源 149
8.3.5 视频采集 150
8.3.6 本地视频预览 151
8.3.7 建立信令系统 153
8.3.8 创建 RTCPeer- Connection155
8.3.9 远端视频渲染 158
8.4 PC 端与 Mac 端的实现 159
8.5 小结 159
第 9 章 网络传输协议 RTP 与 RTCP 160
9.1 如何选择 UDP 与 TCP 160
9.2 RTP 162
9.2.1 RTP 协议头163
9.2.2 RTP 的使用165
9.2.3 RTP 扩展头167
9.2.4 RTP 中的填充数据 170
9.3 RTCP 171
9.3.1 RTCP 报文分类 171
9.3.2 RTCP 协议头 172
9.3.3 WebRTC 的反馈报文 173
9.4 小结 174
第 10 章 WebRTC 拥塞控制 175
10.1 WebRTC 的拥塞控制算法175
10.1.1 Goog-REMB176
10.1.2 Transport-CC 181
10.1.3 基于丢包的拥塞评估算法 原理184
10.1.4 WebRTC 拥塞控制 流程184
10.2 拥塞控制算法比较185
10.2.1 拥塞控制的准确性 186
10.2.2 与 TCP 连接并存时的公 平性187
10.2.3 同种类型连接的公 平性188
10.2.4 拥塞控制算法在丢包 情况下的表现 189
10.3 小结 191
第 11 章 WebRTC 源码分析入门 192
11.1 WebRTC 源码的选择 193
11.2 WebRTC 开发环境的搭建193
11.2.1 配置软硬件环境194
11.2.2 安装依赖工具包195
11.2.3 获取并编译 WebRTC 代码195
11.3 国内 WebRTC 镜像196
11.4 WebRTC 目录结构 197
11.4.1 WebRTC 主目录 197
11.4.2 modules 目录 198
11.5 小结 200
第 12 章 分析 WebRTC 源码的必经 之路 201
12.1 信令服务器实现分析 201
12.1.1 信令服务器的组成 202
12.1.2 信令服务器的工作流程 203
12.2 PeerConnection 客户端分析 206
12.2.1 运行 peerconnection_ client 206
12.2.2 peerconnection_client 的组成 207
12.2.3 界面的展示 213
12.2.4 视频的渲染 218
12.2.5 WebRTC 的使用 220
12.2.6 信令的处理 225
12.3 小结 229
第 13 章 WebRTC 源码分析 231
13.1 WebRTC 的数据流 231
13.2 WebRTC 线程模型 234
13.2.1 WebRTC 线程的创建与使用 234
13.2.2 线程切换 236
13.3 网络传输 250
13.3.1 网络接收与分发模块类关系图 250
13.3.2 网络连接的建立251
13.4 音视频数据采集 256
13.4.1 音频采集与播放256
13.4.2 视频采集与渲染258
13.5 音视频编解码 261
13.5.1 音频编码 261
13.5.2 音频解码 265
13.5.3 视频编码 267
13.5.4 视频解码 270
13.6 小结 272
· · · · · ·