前言
为什么写这本书
实时通信,简称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学派”。