注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計WebRTC Native 開發(fā)實戰(zhàn)

WebRTC Native 開發(fā)實戰(zhàn)

WebRTC Native 開發(fā)實戰(zhàn)

定 價:¥89.00

作 者: 許建林 著
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

購買這本書可以去


ISBN: 9787302558132 出版時間: 2020-08-01 包裝: 平裝
開本: 16開 頁數: 322 字數:  

內容簡介

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

作者簡介

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

圖書目錄

目 錄
第1章 開發(fā)環(huán)境搭建 1
1.1 WebRTC簡介 1
1.2 iOS/macOS編譯環(huán)境 2
1.3 Android/Linux編譯環(huán)境 3
1.4 Windows編譯環(huán)境 3
1.5 更新WebRTC編譯環(huán)境 4
1.6 macOS上的Android編譯環(huán)境 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 創(chuàng)建PeerConnection 33
3.3.4 創(chuàng)建Source和Track 34
3.3.5 創(chuàng)建Offer 37
3.3.6 創(chuàng)建Answer 39
3.3.7 ICE Candidate回調和設置 41
3.3.8 ICE連接狀態(tài)回調 42
3.3.9 核心API回顧 43
3.4 SDP初探 44
第4章 編譯工具介紹 46
4.1 Ninja 46
4.2 GN 46
4.3 系統(tǒng)宏定義 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 三大線程的創(chuàng)建 66
6.2.1 iOS/macOS創(chuàng)建PC Factory 68
6.2.2 Android創(chuàng)建PC Factory 69
6.2.3 Windows/Linux創(chuàng)建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 創(chuàng)建DataChannel 167
9.2.2 SDP 168
9.2.3 發(fā)送消息 169
9.2.4 接收消息 169
9.3 Android DataChannel 170
9.3.1 創(chuàng)建DataChannel 170
9.3.2 SDP 170
9.3.3 發(fā)送消息 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的實現(xiàn) 174
10.4.2 Android的實現(xiàn) 176
10.5 track狀態(tài)的通知 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 客戶端代碼實現(xiàn) 180
第12章 日志和狀態(tài)統(tǒng)計 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 連接狀態(tài)解析 194
12.4.4 視頻發(fā)送狀態(tài)解析 199
12.4.5 音頻發(fā)送狀態(tài)解析 205
12.4.6 視頻接收狀態(tài)解析 207
12.4.7 音頻接收狀態(tài)解析 209
第13章 屏幕共享 211
13.1 概覽 211
13.2 iOS屏幕共享 211
13.2.1 CFRPCapturer的實現(xiàn) 212
13.2.2 CFRPCapturer的使用 214
13.2.3 修改RTCVideoSource 214
13.3 Android屏幕共享 215
13.3.1 ScreenCapturerAndroid的實現(xiàn) 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 伴奏混音發(fā)送 243
16.5 其他控制和調節(jié)功能 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 使用整體靜態(tài)庫 264
18.3.1 std::__1 的來源 264
18.3.2 修改WebRTC編譯配置 266
18.3.3 提取頭文件 267
18.4 使用子模塊靜態(tài)庫 267
第19章 信令 269
19.1 AppRTC Server信令協(xié)議 269
19.1.1 HTTP POST加入房間 270
19.1.2 HTTP GET獲取ICE服務器配置 271
19.1.3 長連接注冊 271
19.1.4 HTTP POST發(fā)送消息 272
19.1.5 長連接發(fā)送消息 272
19.1.6 離開房間 273
19.1.7 同時加入 274
19.1.8 Offer/Answer和ICE Candidate順序 274
19.2 OWT Server信令協(xié)議 274
19.2.1 OWT Server架構 274
19.2.2 OWT信令協(xié)議 276
19.2.3 HTTP POST創(chuàng)建token 276
19.2.4 SocketIO登錄 278
19.2.5 SocketIO發(fā)布流 280
19.2.6 SocketIO發(fā)送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網狀結構信令協(xié)議 285
19.3.1 HTTP POST加入房間 286
19.3.2 長連接注冊 287
19.3.3 WebSocket接收其他用戶的通知 287
19.3.4 長連接發(fā)送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

本目錄推薦

掃描二維碼
Copyright ? 讀書網 m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號