勘误一
a. P3, 1.2节,第三段中的 AVI 应为 AV1.
b. P11, 2.1.3节,第一段中的 AVI 应为 AV1
c. P22,3.2.2 节,第三段中的所有 AVI 应为 AV1
d. P261, 13.5节,第二段中的 AVI 应为 AV1
勘误二
P10, P11, P12 中的三张图,修改如下:
勘误三
P15,第三段应为:
“从上面的描述中你可以看到,在 WebRTC 架构的四层中,最复杂、最核心的是第三层,即 引擎层,因此,这里我再对引擎层内部的关系做下简要介绍。引擎层包括三部分内容,分别是: 音频引擎、视频引擎以及网络传输。其中音频引擎和视频引擎是相对比较独立的。不过,它们 都需要与网络传输层(transport)打交道。也就是说,它们都需要将自己产生的数据通过网络 传输层发送出去;同时,也需要通过网络传输层接收其它端发过来的数据。此外,音频引擎与 视频引擎由于要进行音视频同步的原因,所以它们之间也存在着关联关系。”
勘误四
P34,代码4.4 修改如下:
1 | socket.to(room).emit('cmd'); |
勘误五
P39,代码98行,修改如下:
1 | socket.to(room).emit('other_join', room, socket.id); |
勘误六
P40, 代码120行,修改如下:
1 | socket.emit('left', room, socket.id); |
勘误七
P43,第四段第一个单词groudId应为groupId。
勘误八
P50, 代码20行,修改如下:
1 | socket.on('other_join', (roomid) => { |
勘误九
P70, 代码170行,修改如下:
1 | socket.on('other_join', (roomid) => { |
勘误十
P71, 代码210行,修改如下:
1 | socket.on('left', (roomid, id) => { |
勘误十一
P98,表6.2各NAT之间可穿越表应为:
勘误十二
P103,6.4.2小节倒数第二应为:
“因为主机 A 拿到了主机 B 的 Relay 类型的 Candidate,即 RelayB,所以主机 A 可以直接将音视频数据发向 RelayB。TurnServer 从 RelayB 接收到数据后,会将数据 打包成 TURN 消息,经 3478 端口发往主机B。主机B收数据后,再利用 TurnClient 模块将数据从 TURN 消息中取出,交给其它模块做进一步处理; 同理,主机 B 与主机 A 的操作流程是一样的。TurnServer 从 RelayA 收到数据后,将其打包成 TURN 消息, 也要经过 3478 端口转发给主机A。”
勘误十三
P114,第一段应为:
“程, 默认情况下 WebRTC 会将 VP8/H264 等编码器编码后的数据再交由 red 模块编码,生成带一些冗余信息的数据包,这样当传输中某个包丢了,就可以通过其他包将其恢复回来,而不用重传丢失的包。了解了上面这些内容后,第 16~18 行代码的含义应该就清楚了,即 PT 值为 124 表示需要使用 red 对之前编码好的数据再进行 red 处理,119 是 PT=124 重传数据 包的 PayloadType。如果用 Wireshark 等抓包工具抓取 WebRTC 媒体数据包时会发现它们都 是 red 包,而在 red 包里装的是 VP8/H264 编码的数据。”
勘误十四
P124,代码行号69,内容应为:
1 | 69 使用Opus时,每个音频帧的最小间隔为10毫秒,使用带内FEC |
勘误十五
P168,图9.10有误,正确的图如下所示:
勘误十六
P175,10.1 节的第一段应为:
“在 WebRTC 中包含多种拥塞控制算法,有 GCC、BBR和 PCC。GCC 根据其实现又可细分为基于发送端的拥塞控制算法 Transport-CC4和基于接收端的拥塞控制算法 Goog-REMB。”
勘误十七
P176,第一段中的QUICK应该为QUIC。此外,注脚中的QUICK,也应为QUIC。
勘误十八
P183, 公式10.19 下面一段的第一句应为:
“在上述公式中,d(i) 表示当前包组到达时长与包组发送时长之差,参见公式10.4。正常情况下该值有正有负, ……”
勘误十九
P271, 第一段应为:
“在上述代码中,如果对其再进行简化的话,可以发现 StartNextDecode() 方法中只调用了frame_buffer_对象的 NextFrame() 这个方法。由于该方法传入参数过于复杂,所以不太好理解,其实关键点是掌握其核心代码的第9~15行。”
勘误二十
- P126,代码126行,应修改为:“PT=96, 代表视频编码器VP8 / 采样率为90000”
- P127,代码179行,应修改为:“PT=98,代表视频编码器VP9 / 采样率为90000”
- P127,代码199行,应修改为:“PT=100,代表视频编码器VP9 / 采样率为90000”
- P128,代码200行,应修改为:“PT=102,代表视频编码器H264 / 采样率为90000”
- P128,代码237行,应修改为:“PT=127,代表视频编码器H264 / 采样率为90000”
- P129,代码254行,应修改为:“PT=125,代表视频编码器H264 / 采样率为90000”
- P129,代码271行,应修改为:“PT=108,代表视频编码器H264 / 采样率为90000”
勘误二十一
P198, “博利叶算法”应改为”傅立叶算法”