-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

WebRTC技術詳解:從0到1構建多人視頻會議系統

( 簡體 字)
作者:栗偉類別:1. -> 程式設計 -> 綜合
譯者:
出版社:機械工業出版社WebRTC技術詳解:從0到1構建多人視頻會議系統 3dWoo書號: 54335
詢問書籍請說出此書號!

缺書
NT售價: 495

出版日:4/1/2021
頁數:338
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111678441
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么要寫這本書

最早接觸WebRTC技術是在2015年,那時需要在直播產品中增加實時連麥的功能,經過對幾種技術進行對比,最終我選擇了WebRTC。當時WebRTC技術還不夠成熟,相關資料非常少,在產品中使用WebRTC技術的難度非常大,往往為了弄清楚某個概念、某個API的用法,需要查閱大量的英文資料,而且遇到問題解決起來非常棘手。

從最初的原生WebRTC,到多點控制單元(MCU),再到各種選擇性轉發單元(SFU),我在使用WebRTC的過程中一直不斷學習新的知識,不斷解決新的問題,同時也逐步加深了對WebRTC技術的理解和認識。

因為踩過許多坑,所以我深刻體會到了WebRTC技術的難度和廣度。WebRTC技術包含了音視頻編解碼技術、傳輸技術、流媒體服務器技術等,涵蓋了音視頻處理和傳輸的方方面面。這些技術中任意一個都能成為獨立的課題,都值得花大量時間深入研究。除此之外,理解WebRTC相關API,還必須掌握現代Web技術,尤其是ES6、Promise等語法知識。可見,學習WebRTC技術需要掌握大量的預備知識,這對于初學者來說有一定的門檻。

非常遺憾的是,時至今日仍沒有一本中文書能夠系統地涵蓋WebRTC的技術內容,剝離層層技術面紗將WebRTC呈現給國內技術人員。

在實時通信產品大爆發的時期,為什么WebRTC的中文技術資料如此之少?我想可能有以下幾個原因。

WebRTC技術規范都是英文文檔,缺少使用示例,故而讀起來晦澀難懂,加大了WebRTC的學習難度。

WebRTC技術較新,專業性較強,能真正理解并掌握其精髓的技術人員較少。

國內技術人員工作壓力大,資深WebRTC技術人員忙于項目,沒有時間總結經驗并分享。

WebRTC技術覆蓋面廣,難以講深、講透,針對某個技術點的分享容易實現,但要系統講解技術內幕則非常難。

撰寫一本能夠降低國內技術人員使用WebRTC的門檻,能夠幫助研發人員更好地將WebRTC技術應用到產品中的書,是我編寫本書的出發點。

作為一名較早使用WebRTC的技術人員,我一直關注WebRTC技術的發展,在日常使用過程中積累了大量學習筆記和經驗,這些都為撰寫本書提供了素材。

本書對WebRTC 1.0規范的內容進行了系統整理,以一種易于理解的形式呈現給讀者。書中還給出了我的“踩坑”經驗和一些實用的案例,幫助讀者全面認識WebRTC。

WebRTC降低了實時通信技術的門檻,使得之前只有互聯網巨頭才能掌握的實時通信技術得以普及,使得我們能夠在家遠程辦公,孩子們能夠“停課不停學”。相信在5G普及之后,WebRTC還會迎來更加蓬勃的發展。

可以預見,未來將有更多技術人員學習并應用WebRTC,希望本書能夠幫助大家輕松踏入WebRTC的技術殿堂!

讀者對象

實時通信產品的售前、售后、研發人員,音視頻行業的架構師、CTO等。

本書特色

全面涵蓋WebRTC 1.0規范。

詳細講解WebRTC底層技術。

結合示例演示WebRTC API的使用。

從零起步實現高效、實時的信令系統。

使用WebRTC技術從0到1打造開源視頻會議系統。

如何閱讀本書

本書對WebRTC技術進行了全面的介紹,涵蓋WebRTC 1.0規范全部API、WebRTC底層技術、WebRTC在移動端和服務器端的應用等內容,并提供了具體的示例,力求做到理論結合實踐。本書最后使用這些WebRTC知識打造了一個真實的視頻會議系統,同時對高并發、易擴展的視頻會議架構進行了詳細講解。

本書分為10章。

第1章介紹WebRTC的歷史、技術架構、兼容性等內容。

第2章介紹使用WebRTC API獲取本地攝像頭、話筒、桌面等媒體流的方法,以及媒體流的錄制、使用canvas操作媒體流的方法和示例。

第3章介紹WebRTC底層使用的傳輸技術,如SDP、ICE、STUN/TURN等。

第4章介紹使用RTCPeerConnection管理WebRTC連接的方法。

第5章介紹WebRTC的媒體管理方法,結合示例演示切換編碼格式、控制視頻碼率、替換視頻背景的方法。

第6章結合示例介紹一種高效、實時的信令系統實現方法,并實現一個可以在生產環境中使用的信令系統。

第7章介紹使用WebRTC數據通道傳輸任意數據的方法,結合示例演示基于P2P的文字聊天以及文件傳輸功能的實現。

第8章介紹使用WebRTC獲取媒體流相關統計數據的方法,結合示例演示如何使用Chart.js繪圖展示實時碼率。

第9章介紹在Android、iOS開發環境中使用WebRTC的方法,并實現基于WebRTC的視頻聊天App。

第10章結合我的開源項目WiLearning介紹從0到1打造視頻會議系統的方法。

本書提供的示例代碼以及開源項目WiLearning可以在GitHub上免費獲取。

致謝

感謝我的家人,他們給我提供了最大的支持。在寫書期間,我每天早出晚歸,沒有一個完整的周末,我的愛人承擔起了所有的家務。還有我兩個可愛的小天使,每天晚上回到家里,她們都會跑過來喊著:“歡迎爸爸回來!”這是我一天中最開心的時刻,所有的疲勞和煩惱都一掃而光。

感謝開源社區貢獻了WebRTC這樣一個優秀的實時音視頻框架。正是出于回饋開源社區的愿景,我才投入了大量的精力開發WiLearning。

感謝機械工業出版社的楊福川和各位編輯為我寫書提供了指導,并不辭勞苦地修訂、校稿。

謹以此書獻給我最親愛的家人以及眾多熱愛WebRTC技術的朋友們!
內容簡介:

這是一本全面、詳細講解WebRTC技術以及如何使用它構建一個可商用的視頻會議系統的著作。

在技術維度,本書不僅詳細講解了WebRTC規范和全部API、信令系統、底層技術、移動端、服務端實現,還總結了作者多年來的“踩坑”經驗;在實戰維度,本書不僅提供了可直接應用于視頻會議和在線教育等場景的真實案例,還開源了一個可商用的視頻會議系統WiLearning,教讀者如何從0到1搭建一個高并發、易擴展的視頻會議系統。

全書一共10章

第1章 介紹了WebRTC的歷史、技術架構、網絡拓撲、兼容性等內容。

第2章 講解了使用WebRTC API獲取本地攝像頭、話筒、桌面等媒體流的方法以及媒體流的錄制、使用canvas操作媒體流的方法和示例。

第3章 講解了WebRTC底層使用的傳輸技術,如ICE、SDP、STUN/TURN等。

第4章 介紹了使用RTCPeerConnection管理WebRTC連接的方法。

第5章 介紹了WebRTC的媒體管理方法,結合示例演示了切換編碼格式、控制視頻碼率、替換視頻背景的方法。

第6章 結合示例介紹了一種高效、實時的信令系統實現方法,并實現了一個可以在生產環境中使用的信令系統。

第7章 介紹了使用WebRTC數據通道傳輸任意數據的方法,結合示例演示了基于P2P的文本聊天以及文件傳輸功能的實現。

第8章 介紹了使用WebRTC獲取媒體流相關統計數據的方法,在示例中演示如何使用Chart.js繪圖展示實時碼率。

第9章 介紹了在Android、iOS開發環境中使用WebRTC的方法,通過實例實現了基于WebRTC的視頻聊天App。

第10章 結合筆者的開源項目WiLearning介紹了從0到1打造高性能視頻會議系統的方法。
目錄:

第1章 WebRTC概述1
1.1 WebRTC的歷史1
1.2 WebRTC的技術架構2
1.3 WebRTC的網絡拓撲3
1.4 Simulcast聯播4
1.5 可伸縮視頻編碼5
1.6 WebRTC的兼容性5
1.7 其他直播技術6
1.8 統一計劃與Plan B8
1.9 本章小結9
第2章 本地媒體10
2.1 媒體流10
2.1.1 構造媒體流11
2.1.2 MediaStream屬性11
2.1.3 MediaStream方法11
2.1.4 MediaStream事件14
2.2 媒體軌道15
2.2.1 MediaStreamTrack屬性15
2.2.2 MediaStreamTrack方法17
2.2.3 MediaStreamTrack事件20
2.3 媒體約束22
2.3.1 約束類型22
2.3.2 數據類型與用法23
2.3.3 通用約束25
2.3.4 視頻約束25
2.3.5 音頻約束25
2.3.6 屏幕共享約束26
2.3.7 圖像約束26
2.3.8 約束的advanced屬性27
2.4 媒體設備28
2.4.1 WebRTC隱私和安全28
2.4.2 獲取攝像頭與話筒29
2.4.3 共享屏幕30
2.4.4 查詢媒體設備31
2.4.5 監聽媒體設備變化33
2.5 從canvas獲取媒體流34
2.6 從媒體元素獲取媒體流34
2.7 播放媒體流35
2.8 錄制媒體流36
2.8.1 構造MediaRecorder36
2.8.2 MediaRecorder屬性37
2.8.3 MediaRecorder方法39
2.8.4 MediaRecorder事件42
2.9 示例45
2.9.1 代碼結構45
2.9.2 獲取圖片像素數據46
2.9.3 替換視頻背景47
2.10 本章小結48
第3章 傳輸技術49
3.1 RTP49
3.2 RTCP52
3.3 SRTP/SRTCP54
3.4 TLS/DTLS55
3.5 SDP55
3.6 ICE57
3.7 搭建STUN/TURN服務器63
3.8 本章小結65
第4章 連接管理66
4.1 WebRTC建立連接的過程66
4.1.1 會話描述信息RTCSession-Description69
4.1.2 pending狀態與current狀態70
4.1.3 ICE候選者RTCIceCandidate70
4.2 RTCPeerConnection接口72
4.2.1 構造函數RTCPeerConnection73
4.2.2 連接配置RTCConfiguration74
4.2.3 RTCPeerConnection接口的屬性76
4.2.4 RTCPeerConnection接口的方法82
4.2.5 RTCPeerConnection接口的事件90
4.3 完美協商模式94
4.3.1 SDP沖突問題95
4.3.2 使用完美協商模式95
4.3.3 再談ICE重啟97
4.4 示例98
4.4.1 運行示例98
4.4.2 使用WebSocket99
4.4.3 創建RTCPeerConnection的時機100
4.5 本章小結102
第5章 RTP媒體管理103
5.1 WebRTC編解碼104
5.2 RTCPeerConnection RTP擴展110
5.2.1 RTCPeerConnection擴展方法111
5.2.2 RTCPeerConnection擴展事件113
5.3 傳輸媒體流114
5.3.1 無流軌道115
5.3.2 有流軌道115
5.4 RTP收發管理116
5.4.1 RTCRtpTransceiver屬性117
5.4.2 RTCRtpTransceiver方法118
5.5 RTP發送器118
5.5.1 RTCRtpSender屬性119
5.5.2 RTCRtpSender方法119
5.6 RTP接收器123
5.6.1 RTCRtpReceiver屬性123
5.6.2 RTCRtpReceiver方法123
5.7 DTLS傳輸層126
5.7.1 RTCDtlsTransport屬性126
5.7.2 RTCDtlsTransport方法127
5.7.3 RTCDtlsTransport事件127
5.8 ICE傳輸層128
5.8.1 RTCIceTransport屬性128
5.8.2 RTCIceTransport方法130
5.8.3 RTCIceTransport事件132
5.9 使用DTMF134
5.9.1 RTCDTMFSender屬性134
5.9.2 RTCDTMFSender方法135
5.9.3 RTCDTMFSender事件135
5.10 RTC錯誤處理136
5.11 通話的掛起與恢復137
5.11.1 通話掛起137
5.11.2 通話恢復138
5.12 示例139
5.12.1  動態設置視頻碼率140
5.12.2  使用VP9和H264141
5.12.3 使用虛擬背景144
5.13 本章小結145
第6章 信令服務器146
6.1 使用Node.js147
6.2 使用TypeScript156
6.3 使用Express164
6.4 使用Socket.IO173
6.5 實現信令服務器179
6.6 實現信令客戶端186
6.7 示例189
6.8 本章小結191
第7章 數據通道192
7.1 SCTP192
7.2 RTCPeerConnection數據通道擴展接口196
7.3 RTCSctpTransport199
7.4 RTCDataChannel200
7.5 帶內協商與帶外協商206
7.6 文字聊天與文件傳輸206
7.7 本章小結216
第8章 統計數據217
8.1 統計數據入口217
8.2 RTCStats及其擴展219
8.3 實時碼率監測241
8.3.1 使用Chart.js242
8.3.2 獲取碼率數據244
8.4 本章小結247
第9章 移動端WebRTC248
9.1 原生應用與混合應用248
9.2 原生開發環境249
9.2.1 Android原生開發環境249
9.2.2 iOS原生開發環境250
9.3 WebView251
9.4 Cordova252
9.4.1 編譯環境253
9.4.2 全局配置config.xml254
9.4.3 應用程序行為preference258
9.4.4 應用程序圖標icon261
9.4.5 簡單的WebRTC移動應用264
9.4.6 調試Cordova應用267
9.5 Ionic Framework268
9.5.1 安裝與使用269
9.5.2 開發工具269
9.6 基于Ionic的WebRTC移動應用270
9.6.1 使用模板創建應用程序271
9.6.2 首頁組件272
9.6.3 連接管理服務275
9.6.4 視頻與聊天組件281
9.6.5 構建Android應用程序283
9.6.6 構建iOS應用程序285
9.7 本章小結286
第10章 從0到1打造多人視頻會議系統287
10.1 整體設計287
10.2 媒體服務器289
10.2.1 OWT289
10.2.2 Kurento289
10.2.3 Janus290
10.2.4 Mediasoup291
10.2.5 媒體服務器的選擇291
10.3 Mediasoup信令交互過程293
10.4 服務器端實現294
10.4.1 房間與參與者295
10.4.2 管理與監控接口296
10.5 客戶端實現298
10.5.1 發布媒體流298
10.5.2 訂閱媒體流301
10.5.3 共享桌面303
10.5.4 共享本地媒體303
10.5.5 文檔及白板304
10.5.6 文字聊天307
10.6 傳輸質量監控308
10.7 從網絡故障中恢復309
10.8 本章小結310
序: