序
為什麼寫這本書
即時通訊,簡稱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。