<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          5G時(shí)代音視頻開發(fā)王器:WebRTC(送書)

          共 6542字,需瀏覽 14分鐘

           ·

          2020-10-01 17:59



          新書速遞

          ?

          導(dǎo)讀:WebRTC是一個(gè)支持在網(wǎng)頁(yè)瀏覽器中進(jìn)行實(shí)時(shí)語(yǔ)音對(duì)話或視頻對(duì)話的解決方案。于2011年開源,并在Google、Mozilla、Opera的支持下被納入萬(wàn)維網(wǎng)聯(lián)盟的W3C推薦標(biāo)準(zhǔn)。


          WebRTC出現(xiàn)之前,Flash RTMP是在網(wǎng)頁(yè)端進(jìn)行RTC的主要選擇。但是老舊平臺(tái)的使用情況已經(jīng)出現(xiàn)了衰退,并且安全問題也愈發(fā)嚴(yán)重。隨著HTML5的發(fā)展,Flash Player已經(jīng)系統(tǒng)地從瀏覽器中慢慢移出了,ChromeFirefox已經(jīng)要求用戶提供額外的使用Flash的確認(rèn)信息,目前Chrome會(huì)在后臺(tái)中阻止Flash的加載。如今大量開發(fā)遠(yuǎn)程教育、視頻會(huì)議、視頻會(huì)診等項(xiàng)目時(shí)均已使用WebRTC技術(shù)。

          ?

          WebRTC 項(xiàng)目的原則是API開源、免費(fèi)、標(biāo)準(zhǔn)化、瀏覽器內(nèi)置,比現(xiàn)有的技術(shù)更高效

          ?

          WebRTC雖然冠以“Web”之名,但并不受限于傳統(tǒng)互聯(lián)網(wǎng)應(yīng)用或?yàn)g覽器的終端運(yùn)行環(huán)境。實(shí)際上,無(wú)論終端運(yùn)行環(huán)境是瀏覽器、桌面應(yīng)用、移動(dòng)設(shè)備(AndroidiOS)還是IoT設(shè)備,只要IP連接可到達(dá)且符合WebRTC規(guī)范就可以互通。這一點(diǎn)釋放了大量智能終端(或運(yùn)行在智能終端上的App)的實(shí)時(shí)通信能力,打開了許多對(duì)于實(shí)時(shí)交互性要求較高的應(yīng)用場(chǎng)景的想象空間,如在線教育、視頻會(huì)議、視頻社交、遠(yuǎn)程協(xié)助、遠(yuǎn)程操控等,都是其合適的應(yīng)用領(lǐng)域。


          WebRTC主要應(yīng)用在實(shí)時(shí)通信方面,其優(yōu)點(diǎn)總結(jié)為如下幾點(diǎn):


          • 跨平臺(tái):可以在Web、Android、iOS、Windows、MacOS、Linux環(huán)境下運(yùn)行WebRTC應(yīng)用。

          • 實(shí)時(shí)傳輸:傳輸速度快,延遲低,適合實(shí)時(shí)性要求較高的應(yīng)用場(chǎng)景。

          • 音視頻引擎:強(qiáng)大的音視頻處理能力。

          • 免插件:不需要安裝任何插件,打開瀏覽器即可使用。

          • 免費(fèi):雖然WebRTC技術(shù)已經(jīng)較為成熟,集成了最佳的音視頻引擎和十分先進(jìn)的Codec,但仍是免費(fèi)的。

          • 強(qiáng)大的打洞能力:WebRTC技術(shù)包含了使用STUN、ICETURN、RTP-over-TCP的關(guān)鍵NAT和防火墻穿透技術(shù),并支持代理。

          • 主流瀏覽器支持:包括Chrome、Safari、Firefox、Edge等。


          ?

          WebRTC的應(yīng)用場(chǎng)景十分廣泛,尤其是在網(wǎng)絡(luò)越來(lái)越發(fā)達(dá)的情況下。音視頻會(huì)議、在線教育、即時(shí)通信工具、游戲、人臉識(shí)別等,是當(dāng)下和未來(lái)的重要發(fā)展方向,5G時(shí)代的到來(lái)必然會(huì)引起對(duì)WebRTC井噴式的應(yīng)用。

          ?


          WebRTC目前主要的應(yīng)用領(lǐng)域如下:


          • 音視頻會(huì)議

          • 在線教育

          • 照相機(jī)

          • 音樂播放器

          • 共享遠(yuǎn)程桌面

          • 錄制

          • 即時(shí)通信工具

          • P2P網(wǎng)絡(luò)加速

          • 文件傳輸工具?

          • 游戲?

          • 實(shí)時(shí)人臉識(shí)別

          ?




          WebRTC整體架構(gòu)



          WebRTC目前已經(jīng)形成了一個(gè)HTML5的規(guī)范。由W3C組織來(lái)制定并維護(hù)這個(gè)標(biāo)準(zhǔn),其總體架構(gòu)如下圖所示。



          對(duì)于這個(gè)框架,不同的開發(fā)人員關(guān)注的內(nèi)容不同,例如:


          • Video Conference、Video Call、Remote Education為應(yīng)用層,指具體的音視頻應(yīng)用,是應(yīng)用開發(fā)人員最關(guān)注的。

          • Web API部分是Web應(yīng)用開發(fā)者API層,為上層應(yīng)用層提供API服務(wù),是應(yīng)用開發(fā)者調(diào)用的接口。

          • C++ API部分是面向?yàn)g覽器廠商的API層。

          • Session Management為信令管理層,可由開發(fā)者自行定義實(shí)現(xiàn)。

          • VoiceEngineVideoEngine以及TransportWebRTC的核心內(nèi)容,可由WebRTC的應(yīng)用SDK廠商進(jìn)行優(yōu)化處理。

          • Audio Capture、Video Capture可供瀏覽器廠商自定義實(shí)現(xiàn)。


          WebRTC架構(gòu)圖中涉及的內(nèi)容及概念較多,接下來(lái)將詳細(xì)說(shuō)明。

          ?

          1. Web應(yīng)用


          Web開發(fā)者可以基于Web API開發(fā)基于視頻、音頻的實(shí)時(shí)通信應(yīng)用,如視頻會(huì)議、遠(yuǎn)程教育、視頻通話、視頻直播、游戲直播、遠(yuǎn)程協(xié)作、互動(dòng)游戲、實(shí)時(shí)人臉識(shí)別、遠(yuǎn)程機(jī)械手操作等。

          ?

          2. Web API


          Web API是面向第三方開發(fā)者的WebRTC標(biāo)準(zhǔn)APIJavaScript),使開發(fā)者能夠容易地開發(fā)出類似于網(wǎng)絡(luò)視頻聊天的Web應(yīng)用,最新的技術(shù)進(jìn)展可以參考W3CWebRTC文檔https://www.w3.org/TR/webrtc/,常用的API如下所示。

          • MediaStream:媒體數(shù)據(jù)流,如音頻流、視頻流等。

          • RTCPeerConnection:該類很重要,提供了應(yīng)用層的調(diào)用接口。

          • RTCDataChannel:傳輸非音視頻數(shù)據(jù),如文字、圖片等。



          WebRTC的API接口非常豐富,更多詳細(xì)的API可以參考網(wǎng)址https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API,該文檔提供了中文說(shuō)明。

          ?

          3. C++ API


          底層API使用C++語(yǔ)言編寫,使瀏覽器廠商容易實(shí)現(xiàn)WebRTC標(biāo)準(zhǔn)的Web API,抽象地對(duì)數(shù)字信號(hào)過(guò)程進(jìn)行處理。如RTCPeerConnection API是每個(gè)瀏覽器之間點(diǎn)對(duì)點(diǎn)連接的核心,RTCPeerConnectionWebRTC組件,用于處理點(diǎn)對(duì)點(diǎn)間流數(shù)據(jù)的穩(wěn)定和有效通信。

          ?

          4. Session Management


          Session Management是一個(gè)抽象的會(huì)話層,提供會(huì)話建立和管理功能。該層協(xié)議留給應(yīng)用開發(fā)者自定義實(shí)現(xiàn)。對(duì)于Web應(yīng)用,建議使用WebSocket技術(shù)來(lái)管理信令Session。信令主要用來(lái)轉(zhuǎn)發(fā)會(huì)話雙方的媒體信息和網(wǎng)絡(luò)信息。

          ?

          5. Transport


          Transport為WebRTC的傳輸層,涉及音視頻的數(shù)據(jù)發(fā)送、接收、網(wǎng)絡(luò)打洞等內(nèi)容,可以通過(guò)STUNICE組件來(lái)建立不同類型的網(wǎng)絡(luò)間的呼叫連接。

          ?

          6. VoiceEngine


          VoiceEngine(音頻引擎)是包含一系列音頻多媒體處理的框架,包括從音頻采集到網(wǎng)絡(luò)傳輸端等整個(gè)解決方案。VoiceEngineWebRTC極具價(jià)值的技術(shù)之一,是Google收購(gòu)GIPS公司后開源的,目前在VoIP技術(shù)上處于業(yè)界領(lǐng)先地位。下面介紹主要的模塊。


          iSACInternet Speech Audio Codec)是針對(duì)VoIP和音頻流的寬帶和超寬帶音頻編解碼器,是WebRTC音頻引擎的默認(rèn)編解碼器,參數(shù)如下所示。

          • 采樣頻率:16kHz,24kHz,32kHz(默認(rèn)為16kHz)。

          • 自適應(yīng)速率為:10kbps ~ 52kbps。

          • 自適應(yīng)包大小:30ms~60ms。

          • 算法延時(shí):frame + 3ms



          iLBCInternet Low Bitrate Codec)是VoIP音頻流的窄帶語(yǔ)音編解碼器,參數(shù)如下所示。

          • 采樣頻率:8kHz。

          • 20ms幀比特率為15.2kbps。

          • 30ms幀比特率為13.33kbps。


          NetEQ For Voice是針對(duì)音頻軟件實(shí)現(xiàn)的語(yǔ)音信號(hào)處理元件。NetEQ算法是自適應(yīng)抖動(dòng)控制算法以及語(yǔ)音包丟失隱藏算法,該算法能夠快速且高解析度地適應(yīng)不斷變化的網(wǎng)絡(luò)環(huán)境,確保音質(zhì)優(yōu)美且緩沖延遲最小,是GIPS公司獨(dú)特的技術(shù),能夠有效地處理網(wǎng)絡(luò)抖動(dòng)和語(yǔ)音包丟失時(shí)對(duì)語(yǔ)音質(zhì)量產(chǎn)生的影響。NetEQ也是WebRTC中一個(gè)極具價(jià)值的技術(shù),對(duì)于提高VoIP質(zhì)量有明顯效果,與AEC、NRAGC等模塊集成使用效果更好。


          • Acoustic Echo Canceler(AEC,回聲消除器)是一個(gè)基于軟件的信號(hào)處理元件,能實(shí)時(shí)地去除Mic采集到的回聲。

          • Noise Reduction(NR,噪聲抑制)也是一個(gè)基于軟件的信號(hào)處理元件,用于消除與相關(guān)VoIP的某些類型的背景噪聲(如嘶嘶聲、風(fēng)扇噪音等)。


          ?

          7. VideoEngine


          VideoEngine是WebRTC視頻處理引擎,包含一系列視頻處理的整體框架,從攝像頭采集視頻到視頻信息網(wǎng)絡(luò)傳輸再到視頻顯示,是一個(gè)完整過(guò)程的解決方案。下面介紹主要的模塊。


          • VP8是視頻圖像編解碼器,也是WebRTC視頻引擎默認(rèn)的編解碼器。VP8適合實(shí)時(shí)通信應(yīng)用場(chǎng)景,因?yàn)樗饕轻槍?duì)低延時(shí)而設(shè)計(jì)的編解碼器。VPx編解碼器是Google收購(gòu)ON2公司后開源的,現(xiàn)在是WebM項(xiàng)目的一部分,而WebM項(xiàng)目是Google致力于推動(dòng)的HTML5標(biāo)準(zhǔn)之一。

          • Video Jitter Buffer(視頻抖動(dòng)緩沖器)模塊可以降低由于視頻抖動(dòng)和視頻信息包丟失帶來(lái)的不良影響。

          • Image Enhancements(圖像質(zhì)量增強(qiáng))模塊對(duì)網(wǎng)絡(luò)攝像頭采集到的視頻圖像進(jìn)行處理,包括明暗度檢測(cè)、顏色增強(qiáng)、降噪處理等功能,用來(lái)提升視頻質(zhì)量。


          ?

          如果想深入了解WebRTC更多開發(fā)技術(shù),歡迎閱讀WebRTC音視頻開發(fā):React+Flutter+Go實(shí)戰(zhàn)》一書。

          ?


          點(diǎn)擊鏈接了解詳情并購(gòu)買


          本書從基本概念、基礎(chǔ)應(yīng)用和綜合案例系統(tǒng)介紹WebRTC技術(shù)的原理與應(yīng)用,提供了前后端整體解決方案:PC-Web端使用的是React技術(shù),后端使用的是Golang技術(shù),移動(dòng)端使用的是Flutter技術(shù)。


          結(jié)合一對(duì)一視頻通話案例,幫助讀者快速上手,深入理解WebRTC的各種功能,并快速搭建自己的應(yīng)用。

          ?

          主要內(nèi)容


          主要內(nèi)容包括:WebRTC技術(shù)發(fā)展歷史、應(yīng)用場(chǎng)景、整體架構(gòu),WebRTC通話原理,Web開發(fā)環(huán)境搭建,HTML5項(xiàng)目簡(jiǎn)介,訪問設(shè)備的設(shè)置,音視頻設(shè)備的設(shè)置,音視頻的錄制,結(jié)合React+Flutter+Go技術(shù)開發(fā)音視頻應(yīng)用的案例。

          ?


          內(nèi)容特色


          • 容易上手——通過(guò)一個(gè)個(gè)小案例,只需要簡(jiǎn)單幾步,就能讓程序運(yùn)行起來(lái)。

          • 多端講解——移動(dòng)端App覆蓋iOSAndroid系統(tǒng),還包括桌面端Web接口的使用方法、后端信令服務(wù)及中轉(zhuǎn)服務(wù)的對(duì)應(yīng)實(shí)現(xiàn)。

          • 面向?qū)崙?zhàn)——配有一對(duì)一視頻通話綜合案例,可以實(shí)現(xiàn)前后端語(yǔ)音視頻通信。

          • 覆蓋全面——從訪問設(shè)備、音量檢測(cè)、設(shè)備枚舉、媒體流、媒體軌道、媒體錄制、連接建立到數(shù)據(jù)通道,進(jìn)行全方位講解。

          • 方案完整——Web端采用React技術(shù),可進(jìn)行組件化開發(fā)以及復(fù)雜界面展示;App端使用Flutter跨平臺(tái)技術(shù),視頻渲染能力強(qiáng)并且可以跨多終端;服務(wù)器端采用Go技術(shù),可以充分利用服務(wù)器硬件資源,加快開發(fā)速度。

          • 功能豐富——涉及視頻通話及視頻會(huì)議的眾多功能點(diǎn),如語(yǔ)音視頻通信、共享桌面、電子白板、文件傳輸、音頻錄制、視頻錄制、屏幕錄制、白板錄制等。


          作者簡(jiǎn)介


          亢少軍,資深開發(fā)者、創(chuàng)業(yè)者,《Flutter技術(shù)入門與實(shí)戰(zhàn)》作者。專注于視頻通信技術(shù)領(lǐng)域,多年從事視頻會(huì)議、遠(yuǎn)程教育等相關(guān)技術(shù)研發(fā),對(duì)于Android、iOS以及跨平臺(tái)開發(fā)技術(shù)有比較深入的研究和應(yīng)用,作為主要程序員開發(fā)了多個(gè)應(yīng)用項(xiàng)目,涉及醫(yī)療、交通、銀行等領(lǐng)域。

          ?

          目錄


          目錄:

          前言

          【第一篇 基本概念】

          ?

          第1章 WebRTC概述2

          1.1WebRTC是什么2

          1.2WebRTC整體架構(gòu)4

          ?

          第2章 WebRTC通話原理7

          2.1 概述7

          2.2 媒體協(xié)商8

          2.3 網(wǎng)絡(luò)協(xié)商11

          2.4 連接建立的流程15

          ?

          【第二篇 基礎(chǔ)應(yīng)用】

          ?

          第3章 HTML5示例工程準(zhǔn)備18

          3.1 開發(fā)環(huán)境搭建18

          3.1.1Node安裝18

          3.1.2VSCode安裝19

          3.2 新建示例工程20

          3.2.1package.json配置21

          3.2.2babel支持24

          3.2.3webpack配置24

          3.2.4 首頁(yè)模板文件26

          3.2.5 全局樣式27

          3.2.6 入口文件28

          3.2.7 主組件及路由28

          ?

          第4章 訪問設(shè)備31

          4.1 概述31

          4.2 獲取用戶媒體數(shù)據(jù)32

          4.3 打開攝像頭33

          4.4 打開麥克風(fēng)35

          4.5 截取視頻38

          4.6 共享屏幕41

          4.7 視頻濾鏡45

          ?

          第5章 音視頻設(shè)置49

          5.1 概述49

          5.2 分辨率概述50

          5.3 分辨率設(shè)置51

          5.4 音量檢測(cè)57

          5.5 設(shè)備枚舉60

          5.6 設(shè)置綜合示例67

          ?

          第6章 媒體流與軌道77

          6.1 概述77

          6.2 媒體流78

          6.3MediaStreamTrack79

          6.4 流與軌道API測(cè)試81

          6.5 捕獲Video媒體流85

          6.6 捕獲Canvas媒體流88

          6.6.1 瀏覽器兼容性88

          6.6.2 創(chuàng)建畫布88

          6.6.3Canvas坐標(biāo)系88

          6.6.4 繪制API89

          6.6.5 畫板示例90

          ?

          第7章 媒體錄制95

          7.1 媒體錄制原理95

          7.1.1 創(chuàng)建錄制對(duì)象95

          7.1.2 常用API97

          7.1.3 錄制事件97

          7.2 錄制音頻97

          7.3 錄制視頻103

          7.3.1 約束條件的區(qū)別103

          7.3.2 播放器的區(qū)別103

          7.3.3miniType的區(qū)別103

          7.3.4 錄制視頻示例104

          7.4 錄制屏幕109

          7.5 錄制Canvas113

          ?

          第8章 連接建立118

          8.1 概述118

          8.2 連接建立的過(guò)程119

          8.3 連接建立示例122

          8.3.1 視頻清晰度自適應(yīng)130

          8.3.2 提議/應(yīng)答信息131

          8.3.3Candidate信息131

          8.4 將Video發(fā)送至遠(yuǎn)端132

          8.5 流方式同步白板138

          ?

          第9章 數(shù)據(jù)通道146

          9.1 概述146

          9.2 數(shù)據(jù)通道的概念147

          9.3 發(fā)送文本消息147

          9.4 發(fā)送文件154

          9.4.1FileReader155

          9.4.2 讀取數(shù)據(jù)156

          9.4.3 發(fā)送文件示例157

          ?

          第10章 App示例工程準(zhǔn)備167

          10.1Windows環(huán)境搭建167

          10.2MacOS環(huán)境搭建173

          10.3App方案選取178

          10.4Flutter示例工程178

          10.5 權(quán)限設(shè)置184

          10.5.1iOS平臺(tái)設(shè)置184

          10.5.2Android平臺(tái)設(shè)置184

          10.6 項(xiàng)目配置185

          10.7 入口程序186

          ?

          第11章 App音視頻技術(shù)189

          11.1 概述189

          11.2GetUserMedia190

          11.3 屏幕共享195

          11.4 控制設(shè)備200

          11.5 連接建立206

          11.5.1 媒體約束206

          11.5.2 連接約束207

          11.5.3SDP約束207

          11.5.4 手機(jī)旋轉(zhuǎn)方向207

          11.5.5 連接建立示例207

          11.6 數(shù)據(jù)通道215

          ?

          【第三篇 綜合案例】

          ?

          第12章 一對(duì)一視頻通話總體架構(gòu)224

          12.1 通話流程224

          12.2 技術(shù)框架226

          12.3WebSocket226

          12.4 信令設(shè)計(jì)228

          ?

          第13章 服務(wù)器端實(shí)現(xiàn)230

          13.1Go開發(fā)環(huán)境搭建230

          13.1.1Windows環(huán)境搭建230

          13.1.2MacOS環(huán)境搭建231

          13.2 開發(fā)工具232

          13.3 后端工程介紹232

          13.3.1TURN服務(wù)器運(yùn)行232

          13.3.2 信令服務(wù)器目錄233

          13.4 依賴庫(kù)管理234

          13.5 工具庫(kù)235

          13.6 項(xiàng)目配置文件237

          13.7 入口程序238

          13.8Socket服務(wù)240

          13.9P2P信令服務(wù)244

          13.10 用戶和會(huì)話信息248

          13.11 房間管理及信令處理248

          13.11.1 房間管理249

          13.11.2 信令處理249

          13.11.3 合并邏輯并測(cè)試252

          ?

          第14章 Web端實(shí)現(xiàn)258

          14.1 登錄組件258

          14.2 本地視頻組件259

          14.3 遠(yuǎn)端視頻組件262

          14.4 信令實(shí)現(xiàn)263

          14.5P2P客戶端278

          14.6 視頻通話測(cè)試285

          ?

          第15章 App端實(shí)現(xiàn)287

          15.1 登錄組件287

          15.2 生成Id290

          15.3 約束條件291

          15.4 請(qǐng)求TurnServer292

          15.5ICE配置293

          15.6 封裝WebSocket294

          15.7 定義狀態(tài)297

          15.8 信令實(shí)現(xiàn)298

          15.9P2P客戶端312

          15.10 整體測(cè)試318


          上下滑動(dòng)查看


          送?。?!

          溫馨提示:

          ? ? 請(qǐng)?jiān)陂_獎(jiǎng)前添加我的微信,否則無(wú)法領(lǐng)取獎(jiǎng)品~

          一切解釋權(quán)歸達(dá)達(dá)前端所有,獲獎(jiǎng)?wù)弑仨毺砑游⑿牛?/span>xiaoda0423?


          留言心得,「點(diǎn)贊數(shù)高者(留言最走心【在看】一本,「送」!

          開獎(jiǎng)截止時(shí)間

          「2020-09-30?21:00:00」周三

          掃碼關(guān)注公眾號(hào),訂閱更多精彩內(nèi)容。



          你點(diǎn)的每個(gè)贊,我都認(rèn)真當(dāng)成了喜歡
          點(diǎn)擊閱讀全文購(gòu)買
          瀏覽 18
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美大吊在线网站 | 性无码一区二区三区无码免费 | 91精品人妻少妇无码影院 | 在线播放精品 | 在线波多野结衣 |