网站颜色:

8082407|WebRTC音视频实时互动技术 原理 实战与源码分析 李超 软件程序设计 web开发 9787111685012 WebRTC应用开发方法.

  • 产品名称:WebRTC音视频实时互动技术...
  • 品牌:华章
  • 书名:WebRTC音视频实时互动技术:原理、实战与源码分析
  • 作者:无
  • 定价:89.00元
  • 书名:WebRTC音视频实时互动技术:原理、实战与源码分析
  • 开本:16开
  • 是否是套装:否
  • 出版社名称:机械工业出版社
  • 出版时间:2021-06

深入解析WebRTC开源音视频互动技术原理、架构,并通过开源代码剖析其工作流程和机理。
通过WebRTC互联互通实例详解帮助读者学习WebRTC应用开发方法。

 
 书   名:  webrtc音视频实时互动技术:原理、实战与源码分析
 图书定价:  (咨询特价)
 作 者:  李超
 出 版 社:  机械工业出版社
 出版日期:  2021-07-09
 ISBN 号:  9787111685012
 开   本: 16开
 页   数: 286
 版   次: 1-1
本书分成四大部分:
@ 第1部分为基础篇,主要介绍 WebRTC是干什么的,大体结构是怎样的。我们该如何下载源码,如何对源码进行编译以及 WebRTC 的目录结构是如何安排的,每个目录的主要作用是什么。

实际上,目前90% 的同学还不清楚WebRTC 的源码该如何下载,源码下载后该如何编译。之所以会有这个问题是因为 WebRTC 的代码量过于庞大,必须要命名用它自己的工具进行下载。而困难点在于国内不能直接访问 WebRTC 的源码地址,这就给很多学习者带来了特别大的困难。

另一方面, WebRTC 的编译工具也是自己写的,不是我们通常使用的编译工具。

因此,对于一个新手来说,可以几周甚至几个月都搞不定这件事儿。

@ 第2部分为应用该,在这部分核心的目的是要向读者讲明白如何通过 WebRTC 实现 1对1 的通信。要实现一个 1:1 的实时通信系统,必然要涉及到很多知识。如 SDP协议,媒体协商过程,NAT穿袁信令通信等等相关的知识。因此,在这部分我以实现 WebRTC 1对1实时通信为目的,让读者讲解必要的知识,从而为后面知识的讲解打好基础。

@ 第3部分是本书的核心内容,首先向读者讲解 WebRTC 的整体框架,让他们对 WebRTC 有个全局的认识,之后再逐步向他们介绍 WebRTC 如何采集音视频灵敏据,如何进行音视频的编解码,如何播放声音,如何渲染视频等相关的知识。

@ 第4部分是提高篇,在这部分我会向读者讲解我们在使用 WebRTC 时经常要解决的一些问题。如 如何给 WebRTC 增加模块,即目录是的增加 x264 视频编解码模块,AAC音频编解码模块,在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
深入解析WebRTC开源音视频互动技术原理、架构,并通过开源代码剖析其工作流程和机理。
通过WebRTC互联互通实例详解帮助读者学习WebRTC应用开发方法。
回想2020年,疫情的发使得世界经济陷入衰退,目前仍对我们的生活造成影响。
幸运的是我们生活在一个好时代,科技在这几十年中得到了迅猛发展。即使在疫情最严重的时刻,我们仍然可以通过音视频会议进行远程办公,通过在线教育系统进行学习,通过一些视频软件观看直播。
从某个角度看,这次疫情虽然导致很多行业处于崩溃边缘,但也迫使一些行业加速发展,其中音视频会议、在线教育的重要性马上体现了出来,新的沟通方式和教育方式被越来越多的人所认知、接纳。我们甚至可以推测,在线教育行业和音视频会议行业会在今年崛起,并在未来十年得到迅猛发展。音视频技术、传输技术(如5G)的飞速发展,以及因此激发出的人们对音视频的需求,也为音视频行业的发展提供了动力。
现在音视频技术已经非常成熟了,它被越来越广泛地应用于各行各业,如抖音、短视频、直播、教育直播、音视频会议等。就连热门的AI技术也与音视频技术关系密切,如智能音箱、自动驾驶、人脸识别等都离不开音视频技术。未来音视频技术会有更好的前景,对音视频人才的需求也必然会像当年移动互联网发展时一样出现井喷现象。面对这样的机遇,你若能掌握音视频的核心技术,一定可以在未来职场上获得丰厚的回报和满满的成就感。所以,目前是学习音视频的最佳时机,及早加入音视频研发的队伍,有助于你在未来的职场上更有作为。
说到音视频技术,就不得不说Google开源的WebRTC库了。WebRTC库如同音视频技术的一顶“王冠”,上面镶嵌了大大小小、各种各样的“宝石”,如降噪、回音消除、自动增益、NetEQ、网络拥塞控制······不胜枚举!目前国内无论是在线教育直播系统,还是音视频会议系统,其底层几乎无一例外都使用了WebRTC或从WebRTC中借鉴了不少有价值的模块和思想。不仅如此,如果现在你去应聘一线大厂的音视频研发岗,可以发现岗位描述中都写有“熟悉WebRTC技术者优先”之类的要求,WebRTC的重要性由此可见一斑。因此,了解和学习WebRTC更显得尤为重要。
自从2011年WebRTC推出之后,我就一直在追踪其进展。最近几年WebRTC的发展越来越快,服务质量也越来越好,现在对于大多数公司来说,完全不必像我们当年(2010年)那样从0开始自研音视频系统了。你可以在WebRTC的基础上构建系统,这样既省时又省力,质量又能得到保障。
但学习WebRTC也并非易事,需要你有良好的基础,如熟练掌握C++、熟悉音视频知识、了解网络传输等,这显然增加了学习WebRTC的成本。而我自从加入“跟谁学”团队后,不知怎的竟有了“好为人师”的冲动,一直在想是否可以对WebRTC做一个深入剖析,让更多的人知道WebRTC能做什么,该如何更好地利用WebRTC。这种想法一直萦绕心头,随着时间的推移反而愈加强烈,后来竟成了我必须完成的使命!
因此,自2018年开始,我制定了“WebRTC三部曲”的计划,即推出三门课,分别是“WebRTC入门与实战”“百万级高并发WebRTC流媒体服务器的实现”“WebRTC源码剖析”。这三门课的前两门我已经在慕课网推出,受到了广泛好评,而第三门则以图书的形式推出,本书也就与大家见面了。当然,WebRTC源码十分庞杂,想通过一本书将其讲清楚是不现实的,所以这本书的推出既是我制定的WebRTC三部曲计划的终点,也是后面深入分析WebRTC源码的起点,而我的终极目标是将WebRTC剖析透彻,让更多的人可以更好地利用WebRTC做出更优秀的产品。
本书分为三部分,共13章。其中第1~3章为第一部分,主要介绍WebRTC的由来,为什么要选择WebRTC,以及实时音视频通信的本质是什么。其中第3章最为关键,只有了解了音视频实时通信的本质,你才能知道音视频实时通信要解决什么问题,然后才能知道如何解决这些问题,从而理解WebRTC为什么要这样做。
第二部分包括第4~10章,这部分的内容比较多,我会循序渐进地向你讲解WebRTC的理论和实战。其中第4章介绍了一个最简单的WebRTC信令服务器该如何构建,第5章介绍了如何通过浏览器实现一对一通信,通过这两章你就可以搭建出一个WebRTC一对一实时通信系统了。第6章介绍了WebRTC底层是如何传输音视频数据的,重点是如何进行NAT穿曰第7章详述了WebRTC媒体协商使用的SDP各字段的含义。需要说明的是,SDP中的每个字段你都需要牢记在心,这样才能为后续阅读WebRTC代码扫清障碍。第8章介绍如何通过移动端(Android、iOS)Native的方式实现一对一通信,读完本章内容后,将能实现Web端与移动端的互联互通;第9章介绍了WebRTC底层的传输协议RTP/RTCP,这部分内容是每个从事实时通信工作的读者必须掌握的;第10章介绍了WebRTC的两种拥塞控制算法,详细介绍了WebRTC为什么最终选择Transport-CC作为默认拥塞控制算法。
第三部分包括第11~13章。其中第11章介绍了编译WebRTC源码库的方法,对于大多数刚入门的读者来说,学习WebRTC的第一道门槛便是如何编译WebRTC,通过对该章的学习,相信你一定可以顺利地将WebRTC库编译出来;第12章对WebRTC的peerconnect_client例子做了深入剖析,这个例子可以说是我们学习WebRTC源码的必经之路,这一章你一定要多花些时间将其全部掌握;第13章是对WebRTC源码的整体架构和运转流程的详细分析,也是本书最难的部分,将这章了解清楚后,你就知道WebRTC是如何运转的了。
我深深知道,一本书的完成并非一人之功,有身边无数亲人、朋友的支持和帮助,才能让这本书得以出版。这里首先要感谢我的家人,特别是我亲爱的妻子,正是她的支持和鼓励,才使我可以顺利地将这本书编写完成。除此之外,她还成了我的第一个读者,帮我纠正了很多语病。
感谢我的老领导、老朋友严石先生,他是WebEx创业“十君子”之一,是音视频实时通信方面的顶级专家。他在工作十分繁忙的情况下,仍然抽出了大量时间来阅读本书书稿,并指出了其中的不足,在此万分感谢!
感谢高泽华先生能在百忙之中抽出时间来阅读书稿,并为本书作序。能请到泽华为本书作序是我莫大的荣幸!
感谢刘岐先生为我指出书中的不足。我们是十多年的老朋友了,2005年我们因研究Linux内核而,之后各自发展,没想到几年之后我们又都进入了音视频领域,这应该就是一种缘分吧!
感谢翟方庆先生为本书的编写提供各种帮助,特别是为图书的宣传做了很多工作。
感谢声网,声网不但是一家音视频SDK顶级服务商,也是一家特别有情怀的公司,每年举办的RTC大会都是音视频界的盛会,促进了RTC社区的发展和技术交流。
感谢每一位为本书出版默默付出的人,没有大家的帮助就不会有本书的诞生。
在编写本书时,我努力做到准确细致,但难免存在不妥之处,希望读者朋友能不吝指正,在此万分感谢!
 
热门设计服务