《RTC程序设计:实时音视频权威指南》系统地介绍了实时音视频系统的基础概念、工具、编程方法。
全书分为10章,第1章介绍信息与文字编码的基础知识,以及跨平台网络编程的基本方法。第2、3章介绍视频的采集与渲染技术。第4、5章介绍音频的采集与渲染技术。第6章介绍编解码相关的压缩技术。第7章介绍信令与媒体流的建连过程。第8章介绍网络传输过程中的优化技术。第9章介绍实时音视频的应用与可扩展架构。第10章介绍音视频系统核心指标及其计算方法。每章既有对相关背景知识的介绍、对理论方法的说明,也有可实践的具体编程方法,章节后还附有相关的参考资料和练习题,可方便读者进一步学习与复习。
本书适合计算机、通信相关专业的在校大学生,以及希望全面了解实时音视频系统的技术人员阅读。
国内一线技术专家鼎力打造,凝结15年实战经验,涵盖实时音视频端到端的知识全貌,字节跳动实时音视频技术负责人与LiveVideoStack联合创始人等大咖联袂力荐
戴维
上海交通大学计算机硕士,2009年毕业后在腾讯科技工作十余年;
2020年加入字节跳动,参与实时音视频团队管理,同期任上海交通大学与复旦大学特聘企业讲师;
2023年加入月之暗面,任开发部技术研究员。
擅长通信系统架构与跨平台编程,技术功底扎实。
爱好爬山、观影和阅读科技史。
前言
为什么写这本书
实时通信,简称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中附有部分习题的答案或提示。
致谢
感谢我的母亲和爱人,在疫情居家期间照顾我的三餐,让我能心无旁骛地写作。
感谢字节跳动的领导和同事们,你们为本书的编写提供了大量素材。
感谢博文视点的编辑们,对本书进行了反复审阅和校订。
由于编写时间仓促,以及作者本人的水平、精力有限,书中内容难免存在疏漏,还请各位读者多多指点、包涵。
欢迎大家发邮件与我交流:davidmails@126.com,关注微信公众号“AI学派”。