WebRTC Native 開發實戰 ( 簡體 字) |
作者:許建林 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 53160 詢問書籍請說出此書號!【缺書】 NT售價: 445 元 |
出版日:8/1/2020 |
頁數:322 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302558132 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:提到WebRTC,大家首先想到的可能是Web開發,雖然WebRTC首先發力于Web端,但WebRTC在Native端的應用場景也不容小覷,畢竟Native App的效率依然遠超H5。 目前市面上關于WebRTC的書籍大多都是關注Web端的,對Native端(Android、iOS、macOS、Windows、Linux)的涉獵非常少,目前只有WebRTC Blueprints一書最后講了一下Android和iOS平臺的編譯、運行,但這本書已經是2014年的書了。此外,還沒有任何圖書對WebRTC內部的技術實現進行分析。 本書的目的是引導想使用WebRTC Native的開發者進行入門學習,讓讀者通過本書的學習能夠掌握WebRTC Native開發的基本流程,掌握WebRTC內部的主要數據流程,掌握對WebRTC進行調試分析、二次開發的能力。 本書的特點是示例代碼豐富,實用性和系統性較強,適合WebRTC Native入門開發者閱讀。此外,本書還包含WebRTC內部的主要數據流程,會對WebRTC的內部實現原理進行剖析。 本書首先會介紹Native端WebRTC SDK基本場景的使用,接著對基本場景的主要數據流程進行源碼導讀,之后會討論一些高級的功能和場景,最后對Server端展開討論。 筆者使用的真機開發環境為macOS 10.15.3(19D76)、Xcode 11.3.1(11C504)、Android Studio 3.5.3,虛擬機環境為Parallels Desktop Windows 10和Ubuntu 18.04.3。 本書所涉及的WebRTC示例代碼以及源碼分析內容都是基于WebRTC的#30432提交,即通過提交。OWT Server的代碼都是基于4.3.x分支的。 本書所有源碼開源在 GitHub 上,讀者也可以掃描下方的二維碼獲取: 如果你在下載過程中遇到問題,可發送郵件獲得幫助,郵件標題為“WebRTC Native開發實戰”。 另外,歡迎讀者加入本書專屬社群:Hack WebRTC星球。對本書的任何疑問或者想法,以及WebRTC Native開發相關的話題,都可以在星球里提問、討論
許建林 2020年5月 |
內容簡介:本書是WebRTC方面的專著,WebRTC是一項實時通信領域革命性的技術,在實時音視頻通信領域已經產生了深遠的影響。本書涵蓋了Native端WebRTC SDK基本場景的使用、基本場景下完整流程的源碼導讀,還介紹了一些高級的功能和場景,比如多人通話、屏幕共享、H.265、美顏、伴奏、本地錄制等,最后還對Server端展開了一些討論。本書通過細致的代碼分析和源碼導讀,來講解WebRTC Native的具體實戰,分析WebRTC內部主要的數據流程,力圖使讀者能夠通過實際操作快速入門和理解WebRTC Native的開發技巧。 本書主要面向的是所有希望從事WebRTC Native開發的IT從業人員,且要求讀者具備一定的Java/Objective-C/C++語言基礎。 |
目錄:第1章開發環境搭建 1 1.1WebRTC簡介 1 1.2iOS/macOS編譯環境 2 1.3Android/Linux編譯環境 3 1.4Windows編譯環境 3 1.5更新WebRTC編譯環境 4 1.6macOS上的Android編譯環境 4 第2章運行官方Demo 6 2.1官方Demo簡介 6 2.2部署AppRTCServer 6 2.3運行iOSAppRTCMobile 7 2.4運行macOSAppRTCMobile 13 2.5運行AndroidAppRTCMobile 17 2.6iOS/macOS/AndroidAppRTCMobile互通測試 19 2.7AndroidC++代碼單步調試 20 2.8部署PeerConnectionServer 23 2.9運行WindowsPeerConnectionClient 23 2.10運行LinuxPeerConnectionClient 25 第3章基本流程分析 26 3.1拓撲結構 26 3.2通話過程 27 3.2.1PeerConnection 28 3.2.2Offer、Answer和SDP 28 3.2.3ICE 28 3.2.4STUN 28 3.2.5TURN 29 3.2.6ICECandidate 29 3.3核心API和Demo代碼位置 30 3.3.1全局初始化 30 3.3.2PeerConnectionFactory 31 3.3.3創建PeerConnection 33 3.3.4創建Source和Track 34 3.3.5創建Offer 37 3.3.6創建Answer 39 3.3.7ICECandidate回調和設置 41 3.3.8ICE連接狀態回調 42 3.3.9核心API回顧 43 3.4SDP初探 44 第4章編譯工具介紹 46 4.1Ninja 46 4.2GN 46 4.3系統宏定義 48 4.4添加源碼目錄和預編譯依賴庫 50 第5章SDP詳解 54 5.1PlanBv.s.UnifiedPlan 54 5.2Transceiver 54 5.3SDP詳解 57 5.3.1sessionmetadata 57 5.3.2videomediasection 57 5.3.3audiomediasection 60 5.3.4applicationmediasection 61 5.4操縱SDP 62
第6章線程模型 63 6.1三大線程的使用 63 6.1.1對外接口的線程切換 63 6.1.2內部代碼的線程切換 65 6.2三大線程的創建 66 6.2.1iOS/macOS創建PCFactory 68 6.2.2Android創建PCFactory 69 6.2.3Windows/Linux創建PCFactory 70 第7章視頻數據流程 72 7.1視頻數據流程概覽 72 7.2視頻采集 73 7.2.1iOS/macOS視頻采集 73 7.2.2Android視頻采集 79 7.2.3Windows/Linux視頻采集 85 7.3視頻渲染 87 7.3.1iOS/macOS視頻渲染 87 7.3.2Android視頻渲染 91 7.3.3Windows/Linux視頻渲染 92 7.4視頻編解碼 92 7.4.1iOS/macOS視頻編碼 94 7.4.2iOS/macOS視頻解碼 100 7.4.3Android視頻編碼 104 7.4.4Android視頻解碼 113 7.4.5Windows/Linux視頻編碼 120 7.4.6Windows/Linux視頻解碼 125 7.4.7編碼流控測試 125 7.5視頻數據流程調用棧 130 第8章音頻數據流程 134 8.1音頻數據流程概覽 134 8.2音頻采集和播放 135 8.2.1iOS音頻采集和播放 135 8.2.2Android音頻采集和播放 143 8.2.3macOS音頻采集和播放 153 8.2.4Windows音頻采集和播放 154 8.2.5Linux音頻采集和播放 154 8.3音頻設備模塊ADM 155 8.3.1iOSADM 155 8.3.2AndroidADM 156 8.3.3macOSADM 156 8.3.4WindowsADM 156 8.3.5LinuxADM 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.2iOSDataChannel 167 9.2.1創建DataChannel 167 9.2.2SDP 168 9.2.3發送消息 169 9.2.4接收消息 169 9.3AndroidDataChannel 170 9.3.1創建DataChannel 170 9.3.2SDP 170 9.3.3發送消息 170 9.3.4接收消息 171 9.4RTCQuicTransport 171
第10章純音/視頻 172 10.1概覽 172 10.2AudioTrack的禁用與啟用 173 10.3VideoTrack的禁用與啟用 173 10.4HijackCapturerObserver 174 10.4.1iOS的實現 174 10.4.2Android的實現 176 10.5track狀態的通知 177 10.6錄制相關 177 第11章多人通話 178 11.1概覽 178 11.1.1P2P網狀結構 178 11.1.2SFU結構 179 11.1.3MCU結構 180 11.2客戶端代碼實現 180 第12章日志和狀態統計 183 12.1概覽 183 12.2iOS集成MarsXLog 185 12.3Android集成MarsXLog 187 12.4RTCStatsReport 189 12.4.1AccumulatedValueSplitter 190 12.4.2RtcStats選擇函數 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.2iOS屏幕共享 211 13.2.1CFRPCapturer的實現 212 13.2.2CFRPCapturer的使用 214 13.2.3修改RTCVideoSource 214 13.3Android屏幕共享 215 13.3.1ScreenCapturerAndroid的實現 215 13.3.2ScreenCapturerAndroid的使用 217 第14章H.265支持 219 14.1概覽 220 14.2SDP 220 14.3編解碼 222 14.3.1iOS修改編碼代碼 222 14.3.2iOS修改解碼代碼 224 14.3.3Android修改編碼代碼 226 14.3.4Android修改編碼代碼 227 14.4RTP封包解包 227 第15章美顏 228 15.1Android美顏處理器 228 15.2iOS美顏處理器 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.4FFmpeg調用 252 17.5視頻關鍵幀 257 17.6視頻方向 258 17.7純音/視頻錄制 258 第18章項目外使用WebRTC 260 18.1概覽 260 18.2摘取源碼 260 18.3使用整體靜態庫 264 18.3.1std::__1的來源 264 18.3.2修改WebRTC編譯配置 266 18.3.3提取頭文件 267 18.4使用子模塊靜態庫 267 第19章信令 269 19.1AppRTCServer信令協議 269 19.1.1HTTPPOST加入房間 270 19.1.2HTTPGET獲取ICE服務器配置 271 19.1.3長連接注冊 271 19.1.4HTTPPOST發送消息 272 19.1.5長連接發送消息 272 19.1.6離開房間 273 19.1.7同時加入 274 19.1.8Offer/Answer和ICECandidate順序 274 19.2OWTServer信令協議 274 19.2.1OWTServer架構 274 19.2.2OWT信令協議 276 19.2.3HTTPPOST創建token 276 19.2.4SocketIO登錄 278 19.2.5SocketIO發布流 280 19.2.6SocketIO發送Offer和ICECandidate 280 19.2.7SocketIO接收Answer 281 19.2.8SocketIO訂閱流 282 19.2.9SocketIO接收其他用戶的通知 282 19.2.10SocketIO退出登錄 283 19.2.11Offer和ICECandidate順序 283 19.2.12錯誤重連 284 19.2.13HTTPGET用戶和流列表 284 19.3P2P網狀結構信令協議 285 19.3.1HTTPPOST加入房間 286 19.3.2長連接注冊 287 19.3.3WebSocket接收其他用戶的通知 287 19.3.4長連接發送Offer/Answer和ICECandidate 288 19.3.5離開房間 289 19.3.6錯誤重連 289 19.3.7Offer/Answer和ICECandidate順序 290 第20章NAT穿透 291 20.1NAT穿透原理 291 20.2coturn的基本使用 295 第21章OWTServerSFU數據流程 299 21.1進程結構和JavaScript代碼處理流程 299 21.1.1進程結構 299 21.1.2ManagementAPI 300 21.1.3WebRTCPortal 300 21.1.4ConferenceAgent 301 21.1.5WebRTCAgent 302 21.1.6WebRTCAgentnode間的流擴散 303 21.1.7ClusterManager 304 21.1.8完整過程總結 306 21.2C++代碼處理流程 307 21.2.1WebRTC信令處理 308 21.2.2WebRTC媒體數據處理 309 21.2.3流擴散處理 311 第22章OWTServerMCU數據流程 314 22.1JavaScript代碼處理流程 314 22.1.1ConferenceAgent 314 22.1.2AudioAgent 316 22.1.3VideoAgent 316 22.1.4轉碼處理 317 22.2C++代碼處理流程 317 22.2.1AudioMixer 317 22.2.2VideoMixer 318 22.2.3VideoTranscoder 320 后記 321 |
序: |