天天看點

WebRTC PeerConnection入參解析

基本格式

pc = new RTCPeerConnection([configuration]);

dictionary RTCConfiguration {
  sequence<RTCIceServer> iceServers;
  RTCIceTransportPolicy iceTransportPolicy;
  RTCBundlePolicy bundlePolicy;
  RTCRtcpMuxPolicy rtcpMuxPolicy;
  DOMString peerIdentity;
  sequence<RTCCertificate> certificates;
  [EnforceRange] octet iceCandidatePoolSize = 0;
};      

iceServers

其有RTCIceServer組成。每個RTCIceServer都是一個ICE代理的服務。

屬性 含義
credential 憑據,隻有TURN服務使用
credentialType 憑據類型可以password或oauth
urls 使用者連接配接服務中的url數組
username 使用者名,隻有TURN服務使用

這就是說我們在建立PeerConnection的時候可以建立很多的iceServer,也就是stun和turn服務,通過這個stun和turn服務可以檢測然後擷取到相應的反射位址和中繼位址,形成這些服務之後,它就可以進行連接配接性檢測它的優先級。

iceTransportPolicy

iceTransportPolicy有兩種政策,一種是''all"一種是“relay”,如果設定為all就支援host,也就是本機位址candidate,也就是穿越Nat反射後的candidate以及中繼的candidate; 如果是relay那就隻收集中繼的candidate,也就是中繼的通路

all:可以使用任何類型的候選者(表示host類型、srflx反射、relay中繼都支援)

relay: 隻使用中繼候選者(在真實的網絡情況下一般都使用relay,因為Nat穿越在中國很困難)

bundlePolicy

bundlePolicy的政策有幾種,分别是Balanced、max-compat、max-bundle;預設的是balanced也就是平衡型;

Balanced表示音頻與視訊使用各自的傳輸通道,它是分開的,如果有多路音頻與多路視訊,那麼音頻走音頻的傳輸通道,視訊走視訊的傳輸通道。

max-compat表示每個軌使用自己的傳輸通道(最大相容性),如果兩個音頻一個視訊那就三個通道,每個音頻都走自己的通道,每個視訊都走自己的通道

max-bundle都綁定到同一個傳輸通道,就将媒體的流用一個通道進行傳輸,這是WebRTC建議的方式,這樣對底層來說就比較簡單了,而且建立之後證書隻需要一個,而不需要一堆,否則的話,你每一個連接配接都需要一個證書,就非常耗時間。

rtcpMuxPolicy

該選項在收集ICE候選者時使用。

選項 說明
negotiate 收集RTCP與RTP複用的ICE候選者,如果RTCP能複用就與RTP複用,如果不能複用,就将它們單獨使用。
require 隻能收集RTCP與RTP複用的ICE候選者,如果RTCP不能複用,則失敗。

這裡指的是rtcp的複用政策有幾種,

peerIdentity

就是一個标示身份的字元串,不用過多讨論

certificates

certificates表示一些證書,每一個連通的候選者都需要一個證書,如果你有多個連接配接,就有多個證書,一般情況下複用隻用一個證書,這樣可以增加建成整個傳輸的速度。

我們可以提供每個連接配接的證書也可以不提供,不提供的話就會自動産生。是以這個證書的話一般我們也不會設定。

iceCandidatePoolSize

16位的整數值,用于指定預取的ICE候選者的個數。