注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)WebRTC Native 開(kāi)發(fā)實(shí)戰(zhàn)

WebRTC Native 開(kāi)發(fā)實(shí)戰(zhàn)

WebRTC Native 開(kāi)發(fā)實(shí)戰(zhàn)

定 價(jià):¥89.00

作 者: 許建林 著
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787302558132 出版時(shí)間: 2020-08-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 322 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

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

圖書(shū)目錄

目 錄
第1章 開(kāi)發(fā)環(huán)境搭建 1
1.1 WebRTC簡(jiǎn)介 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章 運(yùn)行官方Demo 6
2.1 官方Demo簡(jiǎn)介 6
2.2 部署AppRTC Server 6
2.3 運(yùn)行iOS AppRTCMobile 7
2.4 運(yùn)行macOS AppRTCMobile 13
2.5 運(yùn)行Android AppRTCMobile 17
2.6 iOS/macOS/Android AppRTCMobile互通測(cè)試 19
2.7 Android C++代碼單步調(diào)試 20
2.8 部署PeerConnection Server 23
2.9 運(yùn)行Windows PeerConnection Client 23
2.10 運(yùn)行Linux PeerConnection Client 25
第3章 基本流程分析 26
3.1 拓?fù)浣Y(jié)構(gòu) 26
3.2 通話過(guò)程 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回調(diào)和設(shè)置 41
3.3.8 ICE連接狀態(tài)回調(diào) 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 添加源碼目錄和預(yù)編譯依賴(lài)庫(kù) 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 對(duì)外接口的線程切換 63
6.1.2 內(nèi)部代碼的線程切換 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章 視頻數(shù)據(jù)流程 72
7.1 視頻數(shù)據(jù)流程概覽 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 編碼流控測(cè)試 125
7.5 視頻數(shù)據(jù)流程調(diào)用棧 130
第8章 音頻數(shù)據(jù)流程 134
8.1 音頻數(shù)據(jù)流程概覽 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 音頻設(shè)備模塊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 音頻數(shù)據(jù)流程調(diào)用棧 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的實(shí)現(xiàn) 174
10.4.2 Android的實(shí)現(xiàn) 176
10.5 track狀態(tài)的通知 177
10.6 錄制相關(guān) 177
第11章 多人通話 178
11.1 概覽 178
11.1.1 P2P網(wǎng)狀結(jié)構(gòu) 178
11.1.2 SFU結(jié)構(gòu) 179
11.1.3 MCU結(jié)構(gòu) 180
11.2 客戶端代碼實(shí)現(xiàn) 180
第12章 日志和狀態(tài)統(tǒng)計(jì) 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選擇函數(shù) 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的實(shí)現(xiàn) 212
13.2.2 CFRPCapturer的使用 214
13.2.3 修改RTCVideoSource 214
13.3 Android屏幕共享 215
13.3.1 ScreenCapturerAndroid的實(shí)現(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 解碼音頻數(shù)據(jù) 235
16.2.1 初始化 235
16.2.2 音頻解碼 236
16.2.3 重采樣 239
16.2.4 銷(xiāo)毀 240
16.3 播放非接收的音頻數(shù)據(jù) 240
16.4 伴奏混音發(fā)送 243
16.5 其他控制和調(diào)節(jié)功能 246
第17章 本地錄制 247
17.1 概覽 247
17.2 添加接口 248
17.3 獲取數(shù)據(jù) 249
17.4 FFmpeg調(diào)用 252
17.5 視頻關(guān)鍵幀 257
17.6 視頻方向 258
17.7 純音/視頻錄制 258
第18章 項(xiàng)目外使用WebRTC 260
18.1 概覽 260
18.2 摘取源碼 260
18.3 使用整體靜態(tài)庫(kù) 264
18.3.1 std::__1 的來(lái)源 264
18.3.2 修改WebRTC編譯配置 266
18.3.3 提取頭文件 267
18.4 使用子模塊靜態(tài)庫(kù) 267
第19章 信令 269
19.1 AppRTC Server信令協(xié)議 269
19.1.1 HTTP POST加入房間 270
19.1.2 HTTP GET獲取ICE服務(wù)器配置 271
19.1.3 長(zhǎng)連接注冊(cè) 271
19.1.4 HTTP POST發(fā)送消息 272
19.1.5 長(zhǎng)連接發(fā)送消息 272
19.1.6 離開(kāi)房間 273
19.1.7 同時(shí)加入 274
19.1.8 Offer/Answer和ICE Candidate順序 274
19.2 OWT Server信令協(xié)議 274
19.2.1 OWT Server架構(gòu) 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 錯(cuò)誤重連 284
19.2.13 HTTP GET用戶和流列表 284
19.3 P2P網(wǎng)狀結(jié)構(gòu)信令協(xié)議 285
19.3.1 HTTP POST加入房間 286
19.3.2 長(zhǎng)連接注冊(cè) 287
19.3.3 WebSocket接收其他用戶的通知 287
19.3.4 長(zhǎng)連接發(fā)送Offer/Answer和ICE Candidate 288
19.3.5 離開(kāi)房間 289
19.3.6 錯(cuò)誤重連 289
19.3.7 Offer/Answer和ICE Candidate順序 290
第20章 NAT穿透 291
20.1 NAT穿透原理 291
20.2 coturn的基本使用 295
第21章 OWT Server SFU數(shù)據(jù)流程 299
21.1 進(jìn)程結(jié)構(gòu)和JavaScript代碼處理流程 299
21.1.1 進(jìn)程結(jié)構(gòu) 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間的流擴(kuò)散 303
21.1.7 Cluster Manager 304
21.1.8 完整過(guò)程總結(jié) 306
21.2 C++代碼處理流程 307
21.2.1 WebRTC信令處理 308
21.2.2 WebRTC媒體數(shù)據(jù)處理 309
21.2.3 流擴(kuò)散處理 311
第22章 OWT Server MCU數(shù)據(jù)流程 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 轉(zhuǎn)碼處理 317
22.2 C++代碼處理流程 317
22.2.1 AudioMixer 317
22.2.2 VideoMixer 318
22.2.3 VideoTranscoder 320
后記 321

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.afriseller.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)