本系列文章翻譯自webrtc官網鏈接codelab。
https://codelabs.developers.google.com/codelabs/webrtc-web/#0
本人翻譯水平有限,本着翻譯過程就是學習過程的目的進行翻譯。若有不當之處,歡迎指出。
介紹
webrtc是一個開源項目,提供web層、(native)源碼層API,實現實時的音頻、視頻、數據交流。
JavaScript主要有以下API,點擊鏈接查看例子
- getUserMedia():獲取音視頻
- MediaRecorder:錄製音視頻
- RTCPeerConnection:建立媒體流
- RTCDataChannel:傳輸用戶數據
有意思的例子2,能錄像還能把錄像下載。
webrtc可以使用在哪裏
安卓和桌面系統的Firefox, Opera, Chrome。在ios和安卓上支持native apps(原生開發)。
信令傳輸(signaling)
webrtc使用RTCPeerConnection在瀏覽器間傳輸媒體流,但同時還需要一個協調溝通,傳輸控制消息的機制,這個流程叫signaling。在codelab這裏我們使用Node實現,但還有很多其他選擇
什麼是STUN和TURN
webrtc基於p2p實現,用戶間儘量選擇最直接的路由連接(例如局域網)。但是現實世界中的網絡充滿了NAT網關和防火牆,在複雜的網絡情況下,p2p連接不能保證連接成功,所以需要後手。STUN服務器提供這樣一種容錯機制,通過webrtc APIS交換連接雙方所有的ip地址,儘可能的嘗試連接。一旦所有的連接嘗試都不成功,TURN作爲一箇中轉服務器的角色保證傳輸。詳細可看下面鏈接:
在互聯網中的webrtc
webrtc安全嗎
webrtc的組件都是加密的(估計指的是web api),只能通過https或者localhost調用。信令傳輸是你自己定義的,安不安全關我鳥事,你可以選擇安全性高的協議。