WebRTC PeerConnection入参解析

tech2022-11-25  100

基本格式

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或oauthurls用户连接服务中的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候选者的个数。

如果该值发生变化 ,它就会触发重新收集候选者。

表示收集的候选者空间有多大,默认是0,例如设置为5的话,如果有20个就默认取5个。

参考地址

最新回复(0)