WebRTC入門學習之初識WebRTC (轉)


一、WebRTC基本架構

         

         

                                                圖一  WebRTC總體架構,摘自百度百科

        先說說WebRTC大致的實現思路:我們創建的web app,然后在app中調用W3C提供的JS API,JS API 會調用瀏覽器中的C++層API,底層C++模塊是來自Google的開源項目WebRTC,它可以讓瀏覽器和瀏覽器直接傳輸音視頻流。但若想就這樣兩個browser就直接通信仍是不行的,后面一節會講到。

        再看上面的圖, WebRTC有三個模塊,Voice Engine(音頻引擎),Video Engine(視頻引擎),Transport。Voice Engine包含iSAC/iLBC Codec(音頻編解碼器,前者是針對寬帶和超寬帶,后者是針對窄帶),NetEQ for voice(處理網絡抖動和語音包丟失),Echo Canceler(回聲消除器),Noise Reduction(噪聲抑制);Video Engine包含VP8 Codec(視頻圖像編解碼器),Video jitter buffer(視頻抖動緩沖器,處理視頻抖動和視頻信息包丟失),Image enhancements(圖像質量增強)。Transport包含SRTP(安全的實時傳輸協議,用以音視頻流傳輸),Multiplexing(多路復用),P2P,STUN+TURN+ICE(用於NAT網絡和防火牆穿越的)。除此之外,安全傳輸可能還會用到DTLS(數據報安全傳輸),用於加密傳輸和密鑰協商。整個WebRTC通信是基於UDP的。

二、W3C提供的WebRTC  API

英文API:http://www.w3.org/TR/webrtc/(個人建議看英文版)

中文API:http://www.iwebrtc.com/blog/webrtc1-0/(old版)

三個主要API:

MediaStream:獲取音視頻流

RTCPeerConnection:用以音視頻數據通信

RTCDataChannel:用以任意應用數據通信

學習重點:offer/answer狀態機變化和ICE狀態機變化,並且結合代碼和整個流程圖理解

                                              圖二 offer/answer狀態機變化圖,摘自W3C

                                                          圖三 ICE狀態機變化圖,摘自W3C

                                                        圖四 完整呼叫連接流程(*重點),摘自W3C

三、WebRTC開源項目

licode:http://chotis2.dit.upm.es/       MIT License

kurento:http://www.kurento.org/      LGPL License

Google也有官方的demo,github上也有比較好的demo(WebRTC-experiment  demo比較全)

另外,大家也可以閱讀《web性能權威指南》,里面也有關於WebRTC的講解,講的挺好的。

 

原文轉自 http://my.oschina.net/panpcui/blog/489571?p=1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM