WebRTC Native 開發實戰
許建林
- 出版商: 清華大學
- 出版日期: 2020-08-01
- 定價: $534
- 售價: 8.5 折 $454
- 語言: 簡體中文
- ISBN: 7302558132
- ISBN-13: 9787302558132
-
相關分類:
Java 程式語言、Apple Developer
已絕版
買這商品的人也買了...
-
$403網絡的琴弦 (玩轉IP看監控)
-
$500$390 -
$352FFmpeg 從入門到精通
-
$505Android 音視頻開發
-
$414$393 -
$690$587 -
$1,000$850 -
$505實時語音處理實踐指南
-
$690$545 -
$750$638 -
$680$530 -
$540$427 -
$403Vue.js 入門與商城開發實戰
-
$1,008$958 -
$380$300 -
$594$564 -
$580$458 -
$550$429 -
$1,200$948 -
$880$695 -
$600$468 -
$505WebRTC 技術詳解:從0到1構建多人視頻會議系統
-
$534$507 -
$414$393 -
$709FFmpeg 入門詳解 — SDK 二次開發與直播美顏原理及應用
相關主題
商品描述
本書是WebRTC方面的專著,WebRTC是一項實時通信領域革命性的技術,在實時音視頻通信領域已經產生了深遠的影響。本書涵蓋了Native端WebRTC SDK基本場景的使用、基本場景下完整流程的源碼導讀,還介紹了一些高級的功能和場景,比如多人通話、屏幕共享、H.265、美顏、伴奏、本地錄制等,最後還對Server端展開了一些討論。本書通過細致的代碼分析和源碼導讀,來講解WebRTC Native的具體實戰,分析WebRTC內部主要的數據流程,力圖使讀者能夠通過實際操作快速入門和理解WebRTC Native的開發技巧。 本書主要面向的是所有希望從事WebRTC Native開發的IT從業人員,且要求讀者具備一定的Java/Objective-C/C++語言基礎。
目錄大綱
目 錄
第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