书籍作者:戴维 | ISBN:9787121472220 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:4875 |
创建日期:2024-05-14 | 发布日期:2024-05-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书系统地介绍了实时音视频系统的基础概念、工具、编程方法。
全书分为10章,第1章介绍信息与文字编码的基础知识,以及跨平台网络编程的基本方法。第2、3章介绍视频的采集与渲染技术。第4、5章介绍音频的采集与渲染技术。第6章介绍编解码相关的压缩技术。第7章介绍信令与媒体流的建连过程。第8章介绍网络传输过程中的优化技术。第9章介绍实时音视频的应用与可扩展架构。第10章介绍音视频系统核心指标及其计算方法。每章既有对相关背景知识的介绍、对理论方法的说明,也有可实践的具体编程方法,章节后还附有相关的参考资料和练习题,可方便读者进一步学习与复习。
本书适合计算机、通信相关专业的在校大学生,以及希望全面了解实时音视频系统的技术人员阅读。
戴维
上海交通大学计算机硕士,2009年毕业后在腾讯科技工作十余年;
2020年加入字节跳动,参与实时音视频团队管理,同期任上海交通大学与复旦大学特聘企业讲师;
2023年加入月之暗面,任开发部技术研究员。
擅长通信系统架构与跨平台编程,技术功底扎实。
爱好爬山、观影和阅读科技史。
在图像识别和短视频大流行的今天
作者将自己多年的RTC实战经验
总结成这部非常接地气的著作
揭开实时音视频系统的神秘面纱
既有相关背景知识、理论方法
也有可实践的具体编程方法
结合大量工程实现背后的思考
帮助读者抓住业务问题核心
提供大量可信度非常高的信息源
配合每章最后的总结与自测练习题
读者自学起来将更加得心应手
全面了解实时音视频系统必备
作者有15年一线大厂相关工作经验
理论讲解深入浅出,实践案例生动易懂
本书是难得的可读性高又实用的优秀技术图书
作者说:
此书又名《我的前半生》。
拥有它,相当于拥有了十余年行业实战经验,
品味了百余本技术书籍精华,
纵览了千余年人类科技简史。
只需一顿饭钱,即可快递到家。
书香恒久远,珍品永流传。
为什么写这本书
实时通信,简称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中附有部分习题的答案或提示。
第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 索引