描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121472220
本书系统地介绍了实时音视频系统的基础概念、工具、编程方法。
全书分为10章,第1章介绍信息与文字编码的基础知识,以及跨平台网络编程的基本方法。第2、3章介绍视频的采集与渲染技术。第4、5章介绍音频的采集与渲染技术。第6章介绍编解码相关的压缩技术。第7章介绍信令与媒体流的建连过程。第8章介绍网络传输过程中的优化技术。第9章介绍实时音视频的应用与可扩展架构。第10章介绍音视频系统核心指标及其计算方法。每章既有对相关背景知识的介绍、对理论方法的说明,也有可实践的具体编程方法,章节后还附有相关的参考资料和练习题,可方便读者进一步学习与复习。
本书适合计算机、通信相关专业的在校大学生,以及希望全面了解实时音视频系统的技术人员阅读。
第1章 信息与传输
1.1 背景介绍
1.1.1 电报与无线电
1.1.2 计算机与互联网
1.1.3 主流平台简介
1.1.4 跨平台开发
1.2 二进制世界
1.2.1 一切皆比特
1.2.2 字节管理类
1.2.3 BufferViewer
1.3 文本表示
1.3.1 ASCII 到 GBK
1.3.2 Unicode 与 UTF-8
1.3.3 TextViewer
1.4 网络编程
1.4.1 网络协议
1.4.2 Socket与线程模型
1.4.3 HelloRTC 服务器
1.4.4 HelloRTC 客户端
第2章 视频帧与采集
2.1 像素与图像
2.1.1 视觉物理
2.1.2 像素与颜色空间
2.1.3 位图与视频帧
2.2 视频采集设备
2.2.1 采集设备枚举
2.2.2 图像采集参数
2.2.3 设备的热插拔通知
2.3 平台采集接口
2.3.1 Windows 视频采集
2.3.2 macOS/iOS 视频采集
2.3.3 Android 视频采集
2.3.4 屏幕流与外部源
2.4 编码前处理
2.4.1 时间戳与计时
2.4.2 旋转角与朝向
2.4.3 视频前处理
2.4.4 管理视频帧
第3章 视频渲染
3.1 视频渲染基础
3.1.1 渲染设备
3.1.2 渲染技术
3.1.3 渲染流水线
3.2 平台渲染接口
3.2.1 Windows 渲染
3.2.2 macOS/iOS 渲染
3.2.3 Android 渲染
3.2.4 Linux 渲染
3.3 跨平台渲染
3.3.1 OpenGL编程
3.3.2 着色器编程
3.4 数字图像与视频
3.4.1 视频格式简介
3.4.2 AVI文件格式
第4章 音频采集
4.1 声音与音频帧
4.1.1 声音的物理属性
4.1.2 数字化音频
4.1.3 WAV文件与播放
4.2 音频采集设备
4.2.1 采集设备枚举
4.2.2 音量与静音
4.2.3 设备变更通知
4.2.4 音频路由选择
4.3 平台采集接口
4.3.1 Windows音频数据采集
4.3.2 macOS/iOS 音频数据采集
4.3.3 Android 音频数据采集
4.4 音频预处理
4.4.1 回声消除AEC
4.4.2 自动增益控制AGC
4.4.3 主动噪声抑制ANS
4.4.4 语音活动检测VAD
第5章 音频渲染
5.1 音频渲染基础
5.1.1 数字音频简介
5.1.2 音频渲染设备
5.1.3 音画同步
5.2 平台渲染接口
5.2.1 Windows 音频渲染
5.2.2 macOS 音频渲染
5.2.3 iOS 音频渲染
5.2.4 Android 音频渲染
5.3 高级音频渲染
5.3.1 混音与均衡
5.3.2 重采样
5.3.3 空间音频
5.3.4 音效技术
第6章 编解码压缩技术
6.1 文本压缩
6.1.1 文本压缩简介
6.1.2 霍夫曼编码
6.1.3 Deflate编解码
6.2 图像压缩
6.2.1 图像压缩简介
6.2.2 JPEG文件格式
6.2.3 JPEG解码
6.3 视频编解码
6.3.1 视频编解码器
6.3.2 MP4文件格式
6.3.3 比特率调整算法
6.4 音频编解码
6.4.1 音频编解码器
6.4.2 MP3文件格式
6.4.3 Opus编解码
第7章 信令与媒体协商
7.1 信令技术
7.1.1 信令通道
7.1.2 WebRTC 基础概念
7.1.3 RTC 信令设计
7.1.4 配置与连接点获取
7.2 媒体描述
7.2.1 SDP格式
7.2.2 SDP Offer
7.2.3 SDP Answer
7.3 媒体建连
7.3.1 STUN
7.3.2 TURN
7.3.3 ICE
7.3.4 DTLS
7.4 发布订阅
7.4.1 RTP
7.4.2 RTCP
7.4.3 SCTP
第8章 传输控制优化
8.1 拥塞控制
8.1.1 带宽探测
8.1.2 GCC算法
8.1.3 BBR算法
8.2 弱网降级
8.2.1 弱网识别
8.2.2 分级策略
8.2.3 性能降级
8.3 抖动缓存与平滑发送
8.3.1 NetEQ
8.3.2 Pacer
8.4 错误恢复
8.4.1 超时重传
8.4.2 前向纠错
第9章 可扩展架构
9.1 应用概览
9.1.1 实时通话
9.1.2 会议与教育
9.1.3 游戏语音与虚拟现实
9.2 流水线
9.2.1 Node
9.2.2 典型流水线
9.3 服务端架构
9.3.1 媒体服务器
9.3.2 高可用网络
9.3.3 全球化部署
9.4 网络设备
第10章 评价指标
10.1 总体指标
10.1.1 成功类指标
10.1.2 延迟类指标
10.1.3 卡顿类指标
10.1.4 指标拆解与归因
10.2 视频质量评估
10.2.1 客观评测
10.2.2 主观评测
10.3 音频质量评估
10.3.1 客观评测
10.3.2 主观评测
10.4 网络质量评估
10.4.1 弱网测试标准
10.4.2 弱网测试工具
10.5 性能与稳定性
10.5.1 性能指标
10.5.2 稳定性指标
附录 A 习题答案
附录 B COM编程基础
附录 C 构建工具CMake
附录 D 调试技巧
附录 E 编程环境
附录 F JNI基础
附录 G RTC术语
附录 H WTL简介
附录 I 索引
为什么写这本书
实时通信,简称RTC(Real-Time Communication),互联网时代的我们,对其并不陌生。尤其是在后疫情时代,多种多样的线上应用场景都促进了 RTC 的发展。
我们与亲人们进行语音视频交流、用会议系统进行线上办公、通过在线课堂进行线上辅导、进语聊房同小伙伴玩游戏“开黑”,实时通信系统越来越多地深入我们的工作与生活中。
虽然实时通信系统是平时用得最多的系统,但市面上阐述这个系统的技术图书却是极少的,主要有以下原因:
(1)RTC 技术本身有一定的复杂性,包括了通信工程、操作系统、多媒体技术、计算机网络、图形学等基础学科的交叉内容,很难通过单学科视角将其阐述透彻。
(2)RTC 技术的发展日新月异。长期以来,网络带宽规模、桌面终端系统、实时通信软件都在持续迅猛发展,RTC 技术的标准日益革新。
(3)现在流行的开源 RTC 系统,大都历史悠久,且体量较大,不适合初学者入门上手。它们大多依赖很多第三方库,读者无法深入探究其底层原理。
现如今,5G宽带设施日益普及,移动终端与桌面系统的纷争趋于平静,WebRTC的推出确立了RTC的W3C标准。我们可以从头审视RTC系统,看看它的各个组成部分,以分析其必要性与实现方式。
由于RTC涉及的知识概念较多,我们将分层次、分阶段地介绍。本书作为基础卷,将着重介绍RTC相关的概念、格式、工具,以及基础模块的程序设计。我将本书的内容比喻为 MOBA 类游戏中单个英雄的玩法介绍,只有掌握了这些基础知识,熟悉了每个角色的定位,才能打出完美的配合,以及进一步深挖。
谁适合看这本书
本书的读者对象包括以下几类群体:
•计算机/通信相关专业的在校大学生。
•致力于从事 RTC 编程开发的技术人员。
•对 RTC 技术感兴趣,并希望在自己的项目中使用相关技术的程序员。
阅读本书,需要读者掌握以下基础知识:
• 操作系统的编程基础(如 Windows、macOS 或移动端开发经验)。
• C 语言编程技巧。
• 计算机网络基础知识。
• 常用计算机命令与 Python 脚本的编写。
阅读说明
本书着重介绍各种概念的二进制格式,我认为这是掌握计算机技术的不二法门。
初学者可以从第1章开始依次阅读每个章节,确保在已经掌握前一章知识的前提下,再阅读后一章的内容。每个章节的内容也都是彼此独立的,因此有基础的读者可以直接跳到感兴趣的章节进行阅读,或者在需要理解某个概念时,通过目录直接查阅。
本书的代码可在读者服务的链接中获取(可扫描封底读者服务处的二维码获得)。
这些代码已在以下环境中验证通过:
Windows 10 下的 Visual Studio 2022
macOS 13、iOS 14/15 下的 XCode 14、Android Studio 2021.3.1 Patch 1
练习题说明
本书每节后都附有练习题,供读者动手实践。练习题遵照如下格式:
序号.[解题时间](题目标题) 题目内容
这里的解题时间是根据题目难度大致估计的,因人而异。
1. [5分钟](颜色取分量)小型代码题,只需写几行代码。
2. [2小时](获取MP4文件的播放时长)中型代码题,需要写复杂函数。
3. [30人月](搭建局域网的RTC)适合小型团队当作课程设计。
附录A中附有部分习题的答案或提示。
这是一本关于多媒体技术的书。从内容组织来看,对于每个知识点,本书基本上都是先介绍背景,再介绍基本原理,然后介绍编程方法。对于编程部分,考虑到编程环境的差异,涵盖Windows、macOS/iOS和Linux多个平台。这样的写法,既有理论高度,又比较方便读者亲自实践。从知识更替的角度来看,戴维的书以RTC为视角,对多媒体编程技术做了一次比较系统的更新。在图像识别和短视频大流行的今天,这是很有必要的。
——张银奎
在生活节奏越来越快的今天,人们对音视频通信的实时性要求越来越高。本书结合当今软硬件发展趋势,系统地从实时音视频的产生、渲染、传输到用户侧的应用、评价进行了全面剖析,理论讲解深入浅出,实践案例生动易懂,可以作为初学者及准备从事该领域工作的专业人员的参考图书。
——复旦大学教授、博士生导师 陈涛
本书将为您揭开实时通信系统的神秘面纱,帮助您了解其必要性和掌握其实现方式,助您在RTC领域取得成功。
——看雪学苑创始人 段钢
作者将自己多年的RTC实战经验总结成这部非常接地气的著作,不但对实时音视频的基础原理进行了清晰的讲解,而且与实际的工程实现相结合,帮助读者获得实用的RTC开发能力。同时,本书给出了进行功能扩展和性能优化的指导方向,方便读者继续进行深入研究。本书非常适合开发者构建自己的实时通信能力。
——字节跳动实时音视频技术负责人 宋慎义
本书的可读性非常高,通过追溯人类历史,从更大的时间尺度上讲述了RTC技术要解决的核心问题是什么,从而更容易理解RTC技术栈的设计初衷。本书也体现了作者的专业度,书中包含大量工程实现背后的思考,帮助读者抓住业务问题核心。本书还提供了大量可信度非常高的信息源,配合每个章节最后的总结与自测练习题,读者自学起来将更加得心应手。
——LiveVideoStack联合创始人 包研
评论
还没有评论。