EasyRTC實現基於WebRTC技術實現的即時通訊類應用
WebRTC簡介
WebRTC,名稱源自網頁即時通訊(英語:Web Real-Time Communication)的縮寫,是一個支援網頁瀏覽器進行實時語音對話或視訊對話的API。它於2011年6月1日開源並在Google、Mozilla、Opera支援下被納入全球資訊網聯盟的W3C推薦標準。EasyRTC基於WebRTC,憑藉多年音視訊開發經驗並結合實際情況,開發了 基於WebRTC的音視訊通訊雲平臺,提供互動教學、連麥直播、視訊會議、指揮排程等多種音視訊跨平臺解決方案。
WebRTC歷史
2010年5月,Google以6820萬美元收購VoIP軟體開發商Global IP Solutions的GIPS引擎,並改為名為“WebRTC”。WebRTC使用GIPS引擎,實現了基於網頁的視訊會議,並支援722,PCM,ILBC,ISAC等編碼,同時使用谷歌自家的VP8視訊解碼器;同時支援RTP/SRTP傳輸等。
2012年1月,谷歌已經把這款軟體整合到Chrome瀏覽器中。同時FreeSWITCH專案宣稱支援iSAC audio codec。
WebRTC核心API
WebRTC原生APIs檔案是基於WebRTC規格書撰寫而成,這些API可分成Network Stream API、 RTCPeerConnection、Peer-to-peer Data API三類:
Network Stream API
MediaStream:MediaStream用來表示一個媒體資料流。
MediaStreamTrack:在瀏覽器中表示一個媒體源。
RTCPeerConnection:一個RTCPeerConnection物件允許使用者在兩個瀏覽器之間直接通訊。
RTCIceCandidate:表示一個ICE協議的候選者。
RTCIceServer:表示一個ICE Server。
Peer-to-peer Data API
DataChannel:資料通道(DataChannel)介面表示一個在兩個節點之間的雙向的資料通道。
WebRTC音訊引擎整體架構
在內部實現上,音訊引擎VoiceEngineImpl通過一系列物件來實現音訊處理,包括VoEAudioProcessingImpl、VoECodecImpl、VoENetworkImpl等等,每個物件負責具體某方面功能,例如VoEAudioProcessingImpl負責呼叫底層AudioProcessing模組對音訊資料進行預處理。在這些功能物件中,比較重要的有VoEBaseImpl、SharedData和Channel。其中VoEBaseImpl是連線音訊裝置AudioDevice和音訊引擎VoiceEngineImpl的紐帶,是音訊資料流水線上的重要一站;SharedData是一個聚合類,持有一系列重要物件;Channel則代表一路音訊資料,負責大部分對該路資料的重要操作,包括音訊資料的前處理、編解碼、傳送和接收、後處理、混音等等。
從功能依賴上講,VoiceEngineImpl依賴五個重要的底層功能模組:音訊資料採集和播放AudioDeviceModule 、音訊資料預處理AudioProcessing、音訊資料編解碼AudioCodingModule、接收端音訊資料緩衝區NetEq、接收端混音AudioConferenceMixer。此外音訊資料編解碼還依賴一系列音訊編解碼器如G711、G722、Opus等等。在傳送端,音訊資料由AudioDevice採集得到,經過AudioProcessing預處理後,到達AudioCodingModule進行編碼,然後由RTPRTCP模組傳送到網路。在接收端,音訊資料經過RTPRTCP模組接收後到達AudioCodingModule,儲存在NetEq中進行抖動控制和錯誤消除,然後解碼。解碼後的資料經過AudioConferenceMixer進行混音,最終傳送到AudioDeviceModule進行播放。
從整個WebRTC框架結構來看,音訊引擎和和視訊引擎都位於比較底層的位置,負責音視訊資料的採集、編解碼、渲染播放等工作。音視訊引擎的上一層是多媒體引擎WebRtcMediaEngine2,是對底層音視訊引擎VideoEngine的進一步高層抽象,由WebRtcVoiceEngine對VoiceEngine進行封裝,WebRtcVideoEngine2對VideoEngine進行封裝。
EasyRTC音視訊通訊雲平臺SDK哪些使用場景用到WebRTC?
1、線上教育
EasyRTC基於谷歌WebRTC開放標準打造,超低延遲、全終端覆蓋,可以滿足各類需求,支援一對一、多對對、共享視訊、共享課件、互動交流等功能。
2、視訊會議
EasyRTC高清流暢的音視訊、高安全性、全平臺執行、豐富的會議管理功能,支援視訊、語音多人會議,適用於會議、培訓、互動等多人移動會議。
3、指揮排程
EasyRTC高清流暢的音視訊、超低延時、指揮有力、資源保障等全面協調的的視訊通訊指揮平臺,實現現場應急與後方應急指揮中心的實時視訊通訊、同步傳輸、精準排程、各級高效協同。適用於安防監控、智慧家居。
4、互動連麥
EasyRTC基於RTMP和RTC混合引擎的線上視訊連麥互動直播。iOS 直播(網路自適應位元速率RTMP Pusher)、點播播放器(播放器經過專業優化,可實現秒開RTMP Player)、基於RTMP 和RTC 混合引擎的的視訊連麥互動(最多支援四路連麥互動),適用於遊戲直播、美女秀場。
5、語音通話
EasyRTC支援視訊、語音、優先視訊等多種呼叫模式,適用於網路電話、活動、教育等多種呼叫場景。
6、實時直播
EasyRTC實現快速實時直播,相比RTMP更加快捷,超低延時、極簡API介面、超快接入。適用於線上娃娃機、智慧硬體、線上醫療、 視訊招聘、相親交友等多種場景。
詳細效果演示可檢視:www.easyrtc.cn
- TCP怎樣保證可靠性
- CV學習筆記(二十七):Python Base64 格式圖片上傳
- C# 中的動態型別
- EasyRTC實現基於WebRTC技術實現的即時通訊類應用
- Jeaf Dean萬字長文回顧2020谷歌技術發展(上) - 知乎
- 一代經典銷聲匿跡:WinXP徹底再見了!
- 資料儲存架構的發展史,看完這一篇就夠了
- 如何縮短visual studio行號的距離
- 第23章 統一程式設計介面——外觀模式
- 對鎖的認識
- 2020-12-31
- AliOS Things Wi-Fi連網的那些事
- C語言讀取一行TXT檔案 && 修改TXT中的內容
- linux安裝node
- 驚呆了!這篇論文全文都是髒話,可編輯部居然對它評價極佳並發表了!
- slave開啟MTS時執行mysqldump引發死鎖案例
- 谷歌允許外部貢獻者參與到 Fuchsia OS 開發當中
- 英語單詞記憶 詞源法-思維導圖(17)詞源flu/flux-53
- jenkins打包docker映象並上傳到阿里雲倉庫
- 淺析WSGI