• 今日66折
  • 天天BUY
2020簡體週年慶
WebRTC Native開發實戰

WebRTC Native開發實戰

  • 定價:534
  • 優惠價:87465
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

本書是Web RTC方面的專著,Web RTC是一項即時通信領域革命性的技術,在即時音視頻通信領域已經產生了深遠的影響。本書涵蓋了Native端Web RTC SDK基本場景的使用、基本場景下完整流程的源碼導讀,還介紹了一些高級的功能和場景,比如多人通話、螢幕共用、H.265、美顏、伴奏、本地錄製等,最後還對Server端展開了一些討論。
 
本書通過細緻的代碼分析和源碼導讀,來講解Web RTC Native的具體實戰,分析Web RTC內部主要的資料流程程,力圖使讀者能夠通過實際操作快速入門和理解Web RTC Native的開發技巧。

 

作者介紹

許建林,網名Piasy,畢業於清華大學電腦系,畢業後創業,參與從零到一打造社交直播 APP YOLO 的全過程。目前就職於 PowerInfo(北京世紀鼎點軟體有限公司),從事高穩定低延時音視頻即時傳輸技術的研發工作,對即時音視頻領域有著深入的研究。開源愛好者,GitHub 近兩千關注者,開源了數個上千標星的項目。技術分享者,曾在北京 GDG Meetup、DroidCon Beijing 進行技術分享,是WebRTC Native 源碼導讀系列博客作者。
 

目錄

第1章 開發環境搭建 1
1.1 WebRTC簡介 1
1.2 iOS/macOS編譯環境 2
1.3 Android/Linux編譯環境 3
1.4 Windows編譯環境 3
1.5 更新WebRTC編譯環境 4
1.6 macOS上的Android編譯環境 4

第2章 運行官方Demo 6
2.1 官方Demo簡介 6
2.2 部署AppRTC Server 6
2.3 運行iOS AppRTCMobile 7
2.4 運行macOS AppRTCMobile 13
2.5 運行Android AppRTCMobile 17
2.6 iOS/macOS/Android AppRTCMobile互通測試 19
2.7 Android C++代碼單步調試 20
2.8 部署PeerConnection Server 23
2.9 運行Windows PeerConnection Client 23
2.10 運行Linux PeerConnection Client 25

第3章 基本流程分析 26
3.1 拓撲結構 26
3.2 通話過程 27
3.2.1 PeerConnection 28
3.2.2 Offer、Answer和SDP 28
3.2.3 ICE 28
3.2.4 STUN 28
3.2.5 TURN 29
3.2.6 ICE Candidate 29
3.3 核心API和Demo代碼位置 30
3.3.1 全域初始化 30
3.3.2 PeerConnectionFactory 31
3.3.3 創建PeerConnection 33
3.3.4 創建Source和Track 34
3.3.5 創建Offer 37
3.3.6 創建Answer 39
3.3.7 ICE Candidate回檔和設置 41
3.3.8 ICE連接狀態回檔 42
3.3.9 核心API回顧 43
3.4 SDP初探 44

第4章 編譯工具介紹 46
4.1 Ninja 46
4.2 GN 46
4.3 系統巨集定義 48
4.4 添加源碼目錄和預編譯依賴庫 50

第5章 SDP詳解 54
5.1 Plan B v.s. Unified Plan 54
5.2 Transceiver 54
5.3 SDP詳解 57
5.3.1 session metadata 57
5.3.2 video media section 57
5.3.3 audio media section 60
5.3.4 application media section 61
5.4 操縱SDP 62 
 
第6章 執行緒模型 63
6.1 三大執行緒的使用 63
6.1.1 對外介面的執行緒切換 63
6.1.2 內部代碼的執行緒切換 65
6.2 三大執行緒的創建 66
6.2.1 iOS/macOS創建PC Factory 68
6.2.2 Android創建PC Factory 69
6.2.3 Windows/Linux創建PC Factory 70

第7章 視頻資料流程程 72
7.1 視頻資料流程程概覽 72
7.2 視頻採集 73
7.2.1 iOS/macOS視頻採集 73
7.2.2 Android視頻採集 79
7.2.3 Windows/Linux視頻採集 85
7.3 視頻渲染 87
7.3.1 iOS/macOS視頻渲染 87
7.3.2 Android視頻渲染 91
7.3.3 Windows/Linux視頻渲染 92
7.4 視頻編解碼 92
7.4.1 iOS/macOS視頻編碼 94
7.4.2 iOS/macOS視頻解碼 100
7.4.3 Android視頻編碼 104
7.4.4 Android視頻解碼 113
7.4.5 Windows/Linux視頻編碼 120
7.4.6 Windows/Linux視頻解碼 125
7.4.7 編碼流控測試 125
7.5 視頻資料流程程調用棧 130

第8章 音訊資料流程程 134
8.1 音訊資料流程程概覽 134
8.2 音訊採集和播放 135
8.2.1 iOS音訊採集和播放 135
8.2.2 Android音訊採集和播放 143
8.2.3 macOS音訊採集和播放 153
8.2.4 Windows音訊採集和播放 154
8.2.5 Linux音訊採集和播放 154
8.3 音訊設備模組ADM 155
8.3.1 iOS ADM 155
8.3.2 Android ADM 156
8.3.3 macOS ADM 156
8.3.4 Windows ADM 156
8.3.5 Linux ADM 157
8.3.6 聲音路由 157
8.4 音訊編解碼模組ACM 158
8.4.1 音訊編碼 159
8.4.2 音訊解碼 160
8.5 音訊資料流程程調用棧 162

第9章 DataChannel 167
9.1 概覽 167
9.2 iOS DataChannel 167
9.2.1 創建DataChannel 167
9.2.2 SDP 168
9.2.3 發送消息 169
9.2.4 接收消息 169
9.3 Android DataChannel 170
9.3.1 創建DataChannel 170
9.3.2 SDP 170
9.3.3 發送消息 170
9.3.4 接收消息 171
9.4 RTCQuicTransport 171 
 
第10章 純音/視頻 172
10.1 概覽 172
10.2 AudioTrack的禁用與啟用 173
10.3 VideoTrack的禁用與啟用 173
10.4 HijackCapturerObserver 174
10.4.1 iOS的實現 174
10.4.2 Android的實現 176
10.5 track狀態的通知 177
10.6 錄製相關 177

第11章 多人通話 178
11.1 概覽 178
11.1.1 P2P網狀結構 178
11.1.2 SFU結構 179
11.1.3 MCU結構 180
11.2 用戶端代碼實現 180

第12章 日誌和狀態統計 183
12.1 概覽 183
12.2 iOS集成Mars XLog 185
12.3 Android集成Mars XLog 187
12.4 RTCStatsReport 189
12.4.1 AccumulatedValueSplitter 190
12.4.2 RtcStats選擇函數 193
12.4.3 連接狀態解析 194
12.4.4 視頻發送狀態解析 199
12.4.5 音訊發送狀態解析 205
12.4.6 視頻接收狀態解析 207
12.4.7 音訊接收狀態解析 209

第13章 螢幕共用 211
13.1 概覽 211
13.2 iOS螢幕共用 211
13.2.1 CFRPCapturer的實現 212
13.2.2 CFRPCapturer的使用 214
13.2.3 修改RTCVideoSource 214
13.3 Android螢幕共用 215
13.3.1 ScreenCapturerAndroid的實現 215
13.3.2 ScreenCapturerAndroid的使用 217

第14章 H.265 支持 219
14.1 概覽 220
14.2 SDP 220
14.3 編解碼 222
14.3.1 iOS修改編碼代碼 222
14.3.2 iOS修改解碼代碼 224
14.3.3 Android修改編碼代碼 226
14.3.4 Android修改編碼代碼 227
14.4 RTP封包解包 227

第15章 美顏 228
15.1 Android美顏處理器 228
15.2 iOS美顏處理器 231

第16章 伴奏 234
16.1 概覽 234
16.2 解碼音訊資料 235
16.2.1 初始化 235
16.2.2 音訊解碼 236
16.2.3 重採樣 239
16.2.4 銷毀 240
16.3 播放非接收的音訊資料 240
16.4 伴奏混音發送 243
16.5 其他控制和調節功能 246

第17章 本地錄製 247
17.1 概覽 247
17.2 添加介面 248
17.3 獲取資料 249
17.4 FFmpeg調用 252
17.5 視頻關鍵幀 257
17.6 視頻方向 258
17.7 純音/視頻錄製 258

第18章 專案外使用WebRTC 260
18.1 概覽 260
18.2 摘取源碼 260
18.3 使用整體靜態程式庫 264
18.3.1 std::__1 的來源 264
18.3.2 修改WebRTC編譯配置 266
18.3.3 提取標頭檔 267
18.4 使用子模組靜態程式庫 267

第19章 信令 269
19.1 AppRTC Server信令協議 269
19.1.1 HTTP POST加入房間 270
19.1.2 HTTP GET獲取ICE伺服器配置 271
19.1.3 長連接註冊 271
19.1.4 HTTP POST發送消息 272
19.1.5 長連接發送消息 272
19.1.6 離開房間 273
19.1.7 同時加入 274
19.1.8 Offer/Answer和ICE Candidate順序 274
19.2 OWT Server信令協議 274
19.2.1 OWT Server架構 274
19.2.2 OWT信令協議 276
19.2.3 HTTP POST創建token 276
19.2.4 SocketIO登錄 278
19.2.5 SocketIO發佈流 280
19.2.6 SocketIO發送Offer和ICE Candidate 280
19.2.7 SocketIO接收Answer 281
19.2.8 SocketIO訂閱流 282
19.2.9 SocketIO接收其他用戶的通知 282
19.2.10 SocketIO退出登錄 283
19.2.11 Offer和ICE Candidate順序 283
19.2.12 錯誤重連 284
19.2.13 HTTP GET用戶和流列表 284
19.3 P2P網狀結構信令協議 285
19.3.1 HTTP POST加入房間 286
19.3.2 長連接註冊 287
19.3.3 WebSocket接收其他用戶的通知 287
19.3.4 長連接發送Offer/Answer和ICE Candidate 288
19.3.5 離開房間 289
19.3.6 錯誤重連 289
19.3.7 Offer/Answer和ICE Candidate順序 290

第20章 NAT穿透 291
20.1 NAT穿透原理 291
20.2 coturn的基本使用 295

第21章 OWT Server SFU資料流程程 299
21.1 進程結構和JavaScript代碼處理流程 299
21.1.1 進程結構 299
21.1.2 Management API 300
21.1.3 WebRTC Portal 300
21.1.4 Conference Agent 301
21.1.5 WebRTC Agent 302
21.1.6 WebRTC Agent node間的流擴散 303
21.1.7 Cluster Manager 304
21.1.8 完整過程總結 306
21.2 C++代碼處理流程 307
21.2.1 WebRTC信令處理 308
21.2.2 WebRTC媒體資料處理 309
21.2.3 流擴散處理 311

第22章 OWT Server MCU資料流程程 314
22.1 JavaScript代碼處理流程 314
22.1.1 Conference Agent 314
22.1.2 Audio Agent 316
22.1.3 Video Agent 316
22.1.4 轉碼處理 317
22.2 C++代碼處理流程 317
22.2.1 AudioMixer 317
22.2.2 VideoMixer 318
22.2.3 VideoTranscoder 320
後記 321
 

 

詳細資料

  • ISBN:9787302558132
  • 規格:平裝 / 322頁 / 16k / 19 x 26 x 1.61 cm / 普通級 / 單色印刷 / 初版
  • 出版地:大陸

最近瀏覽商品

 

相關活動

  • 【從入門到專業】掌握最前端的數位知識,2020資訊月,電腦書66折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 中信出版社
  • 北京聯合出版79折起
  • 簡體館週年慶

訂閱電子報

想獲得最新商品資訊,請訂閱免費電子報