[套装书]WebRTC音视频实时互动技术:原理、实战与源码分析+WebRTC技术详解:从0到1构建多人视频会议系统(2册)

作者
李超 栗伟
丛书名
Web开发技术丛书
出版社
机械工业出版社
ISBN
9782107161758
简要
简介
这是一本全面、详细讲解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打造高性能视频会议系统的方法。
目录
[套装书具体书目]
8079822 - WebRTC技术详解:从0到1构建多人视频会议系统 - 9787111678441 - 机械工业出版社 - 定价 99
8082407 - WebRTC音视频实时互动技术:原理、实战与源码分析 - 9787111685012 - 机械工业出版社 - 定价 89



---------------------------8082407 - 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



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



前言
第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

推荐

车牌查询
桂ICP备20004708号-3