[套装书]WebRTC技术详解:从0到1构建多人视频会议系统+音视频开发进阶指南:基于Android与iOS平台的实践(2册)

作者
栗伟 展晓凯 魏晓红
丛书名
出版社
机械工业出版社
ISBN
9782104131692
简要
简介
这是一本全面、详细讲解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打造高性能视频会议系统的方法。 . ---------------------------7067183 - 音视频开发进阶指南:基于Android与iOS平台的实践--------------------------- 本书采用从零开始,逐级深入的方式写作,以项目实战为阶段性目标,外加实际生产环境下的特殊案例作为优化方案,让读者可以全方位掌握移动平台下音视频开发的大部分内容。首先介绍实现视频播放器和录制需要的基础知识,然后通过案例讲解如何实现视频播放器和一个视频录制的应用。但是一款录制的应用,要想上线,其实还要进行给音频视频美化,所以在提高篇,介绍了相应的内容,并给出了一个实际生产环境中的案例,之后,指导读者进阶,把前面学到的基础内容应用到直播中。后,给出排错方法和工具,和大家分享如何更有效率地开发应用程序。
目录
[套装书具体书目]
7067183 - 音视频开发进阶指南:基于Android与iOS平台的实践 - 9787111585824 - 机械工业出版社 - 定价 79
8079822 - WebRTC技术详解:从0到1构建多人视频会议系统 - 9787111678441 - 机械工业出版社 - 定价 99



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



---------------------------7067183 - 音视频开发进阶指南:基于Android与iOS平台的实践---------------------------


推荐序一
推荐序二
前言
第1章 音视频基础概念 1
1.1 声音的物理性质 1
1.1.1 声音是波 1
1.1.2 声波的三要素 2
1.1.3 声音的传播介质 3
1.1.4 回声 3
1.1.5 共鸣 4
1.2 数字音频 4
1.3 音频编码 6
1.4 图像的物理现象 7
1.5 图像的数值表示 8
1.5.1 RGB表示方式 8
1.5.2 YUV表示方式 9
1.5.3 YUV和RGB的转化 10
1.6 视频的编码方式 10
1.6.1 视频编码 10
1.6.2 编码概念 11
1.7 本章小结 13
第2章 移动端环境搭建 14
2.1 在iOS上如何搭建一个基础项目 14
2.2 在Android上如何搭建一个基础项目 21
2.3 交叉编译的原理与实践 26
2.3.1 交叉编译的原理 26
2.3.2 iOS平台交叉编译的实践 27
2.3.3 Android平台交叉编译的实践 33
2.3.4 使用LAME编码MP3文件 38
2.4 本章小结 42
第3章 FFmpeg的介绍与使用 43
3.1 FFmpeg的编译与命令行工具的使用 43
3.1.1 FFmpeg的编译 43
3.1.2 FFmpeg命令行工具的使用 51
3.2 FFmpeg API的介绍与使用 60
3.3 FFmpeg源码结构 68
3.3.1 libavformat与libavcodec介绍 68
3.3.2 FFmpeg通用API分析 69
3.3.3 调用FFmpeg解码时用到的函数分析 70
3.3.4 调用FFmpeg编码时用到的函数分析 71
3.3.5 面向对象的C语言设计 72
3.4 本章小结 74
第4章 移动平台下的音视频渲染 75
4.1 AudioUnit介绍与实践 75
4.2 Android平台的音频渲染 84
4.2.1 AudioTrack的使用 85
4.2.2 OpenSL ES的使用 87
4.3 视频渲染 90
4.3.1 OpenGL ES介绍 90
4.3.2 OpenGL ES的实践 91
4.3.3 上下文环境搭建 98
4.3.4 OpenGL ES中的纹理 104
4.4 本章小结 109
第5章 实现一款视频播放器 110
5.1 架构设计 110
5.2 解码模块的实现 115
5.3 音频播放模块的实现 118
5.3.1 Android平台的音频渲染 118
5.3.2 iOS平台的音频渲染 119
5.4 画面播放模块的实现 121
5.4.1 Android平台的视频渲染 121
5.4.2 iOS平台的视频渲染 122
5.5 AVSync模块的实现 124
5.5.1 维护解码线程 124
5.5.2 音视频同步 125
5.6 中控系统串联起各个模块 127
5.6.1 初始化阶段 127
5.6.2 运行阶段 128
5.6.3 销毁阶段 129
5.7 本章小结 130
第6章 音视频的采集与编码 131
6.1 音频的采集 131
6.1.1 Android平台的音频采集 131
6.1.2 iOS平台的音频采集 134
6.2 视频画面的采集 137
6.2.1 Android平台的视频画面采集 137
6.2.2 iOS平台的视频画面采集 146
6.3 音频的编码 156
6.3.1 libfdk_aac编码AAC 156
6.3.2 Android平台的硬件编码器MediaCodec 158
6.3.3 iOS平台的硬件编码器AudioToolbox 161
6.4 视频画面的编码 166
6.4.1 libx264编码H264 166
6.4.2 Android平台的硬件编码器MediaCodec 172
6.4.3 iOS平台的硬件编码器 175
6.5 本章小结 184
第7章 实现一款视频录制应用 185
7.1 视频录制的架构设计 185
7.2 音频模块的实现 188
7.2.1 音频队列的实现 189
7.2.2 Android平台的实现 191
7.2.3 iOS平台的实现 194
7.3 音频编码模块的实现 198
7.3.1 改造编码器 198
7.3.2 编码器适配器 199
7.4 画面采集与编码模块的实现 202
7.4.1 视频队列的实现 202
7.4.2 Android平台画面编码后入队 203
7.4.3 iOS平台画面编码后入队 204
7.5 Mux模块 205
7.5.1 初始化 206
7.5.2 封装和输出 208
7.5.3 销毁资源 212
7.6 中控系统串联起各个模块 213
7.7 本章小结 214
第8章 音频效果器的介绍与实践 215
8.1 数字音频基础 215
8.1.1 波形图 215
8.1.2 频谱图 217
8.1.3 语谱图 219
8.1.4 深入理解时域与频域 219
8.2 数字音频处理:快速傅里叶变换 222
8.3 基本乐理知识 229
8.3.1 乐谱 229
8.3.2 音符的音高与十二平均律 231
8.3.3 音符的时值 233
8.3.4 节拍 233
8.3.5 MIDI格式 234
8.4 混音效果器 235
8.4.1 均衡效果器 236
8.4.2 压缩效果器 239
8.4.3 混响效果器 240
8.5 效果器实现 243
8.5.1 Android平台实现效果器 243
8.5.2 iOS平台实现效果器 252
8.6 本章小结 255
第9章 视频效果器的介绍与实践 256
9.1 图像处理的基本原理 256
9.1.1 亮度调节 257
9.1.2 对比度调节 258
9.1.3 饱和度调节 259
9.2 图像处理进阶 259
9.2.1 图像的卷积过程 260
9.2.2 锐化效果器 260
9.2.3 高斯模糊算法 262
9.2.4 双边滤波算法 263
9.2.5 图层混合介绍 264
9.3 使用FFmpeg内部的视频滤镜 266
9.3.1 FFmpeg视频滤镜介绍 266
9.3.2 滤镜图的构建 267
9.3.3 使用与销毁滤镜图 269
9.3.4 常用滤镜介绍 270
9.4 使用OpenGL ES实现视频滤镜 272
9.4.1 加水印 273
9.4.2 添加自定义文字 278
9.4.3 美颜效果器 282
9.4.4 动图贴纸效果器 284
9.4.5 主题效果器 288
9.5 本章小结 291
第10章 专业的视频录制应用实践 292
10.1 视频硬件解码器的使用 292
10.1.1 初始化信息准备 292
10.1.2 VideoToolbox解码H264 294
10.1.3 MediaCodec解码H264 298
10.2 音频效果器的集成 304
10.2.1 Android音效处理系统的实现 305
10.2.2 iOS音效处理系统的实现 308
10.3 一套跨平台的视频效果器的设计与实现 309
10.4 将特效处理库集成到视频录制项目中 315
10.4.1 Android平台特效集成 316
10.4.2 iOS平台特效集成 321
10.5 本章小结 325
第11章 直播应用的构建 327
11.1 直播场景分析 327
11.2 拉流播放器的构建 329
11.2.1 Android平台播放器增加后处理过程 329
11.2.2 iOS平台播放器增加后处理过程 332
11.3 推流器的构建 335
11.4 第三方云服务介绍 340
11.5 礼物系统的实现 341
11.5.1 Cocos2dX项目的运行原理 342
11.5.2 关键API详解 344
11.5.3 实现一款动画 348
11.6 聊天系统的实现 350
11.6.1 Android客户端的WebSocket实现 351
11.6.2 iOS客户端的WebSocket实现 352
11.7 本章小结 353
第12章 直播应用中的关键处理 354
12.1 直播应用的细节分析 354
12.1.1 推流端细节分析 354
12.1.2 拉流端细节分析 355
12.2 推流端的关键处理 355
12.2.1 自适应码率的实践 356
12.2.2 统计数据保证后续的应对策略 361
12.3 拉流端的关键处理 363
12.3.1 重试机制的实践 364
12.3.2 首屏时间的保证 366
12.3.3 统计数据保证后续的应对策略 370
12.4 本章小结 371
第13章 工欲善其事,必先利其器 372
13.1 Android平台工具详解 372
13.1.1 ADB工具的熟练使用 372
13.1.2 MAT工具检测Java端的内存泄漏 377
13.1.3 NDK工具详解 387
13.1.4 Native层的内存泄漏检测 389
13.1.5 breakpad收集线上Crash 396
13.2 iOS使用Instruments诊断应用 399
13.2.1 Debug Navigator 399
13.2.2 Time Profiler 400
13.2.3 Allocations 402
13.2.4 Leaks 403
13.3 本章小结 405
附录A 通过Ne10的交叉编译输入理解ndk-build 406
附录B 编码器的使用细节 415
附录C 视频的表示与编码 423

推荐

车牌查询
桂ICP备20004708号-3