webrtc-stun/turn服务相关api配置

/post/webrtcServer article cover image

stunturn服务器

  • rfc5766-turn-server
  • coTurn
  • ResTurn

coturn

<Callout type="info"> <a target="_blank" href="https://github.com/coturn/coturn">coTurn github</a> </Callout>

服务器配置

text
listening-port=xxxx # 指定监听端口
external-ip=39.105.185.198 # 指定监听端口
user=aaaaaaa:bbbbbb # 访问stun/turn服务器的用户名和密码
realm=stun.xxx.cn # 域名,这个一定要设置

rtcpeerconnection-configuration

ts
interface RTCConfiguration {
  iceServers: sequence<RTCIceServer>;
  iceTransportPolicy: RTCIceTransportPolicy;
  bundlePolicy: RTCBundlePolicy;
  rtcpMuxPolicy: RTCRtcpMuxPolicy;
  peerIdentity: DOMString;
  certificates: sequence<RTCCertificate>;
  iceCandidatePoolSize: octet
}

bundlepolicy

  • Balanced: 音频与视频使用各自的传输通道
  • max-compat: 每个轨道使用自己的传输通道
  • max-bundle: 都绑定到同一个传输通道

certificates

授权可以使用连接的一组证书

icecandidatepoolsize

16位的整数值,用于指定预取的ICE候选者的个数。如果该值发生变化,他会触发重新收集候选者

icetransportpolicy

指定ICE传输策略

  • relay: 只使用中继候选者
  • all: 可以使用任何类型的候选者

iceservers

其由RTCIceServer组成。每个RTCUceServer都是一个ICE代理的服务

  • credential:凭据,只有TURN服务使用
  • credentialType: 凭据类型可以password或oauth
  • urls: 用于连接服务中的url数组
  • username: 用户名,只有TURN服务使用

rtcpmuxpolicy

该选项在收集ICE候选者时使用

  • negotiate: 收集RTCP与RTP复用的ICE候选者,如果RTCP能复用就与RTP复用,如果不能复用,就将他们单独使用。
  • require: 智能手机RTCP与RTP复用的ICE候选者,如果RTCP不能复用,则失败

createoffer-configuration

  • offerToReceiveAudio: 用于控制是否向远程对等方提供尝试发送音频的机会
  • offerToReceiveVideo: 用于控制是否向远程对等方提供尝试发送视频的机会
  • iceRestart: 该选项会重启ICE,重新进行candidate收集
  • voiceActivityDetection: 是否开启静音检测,默认开启

创建连接注意事项

  • 网络连接要在音视频数据获取之后,否则有可能绑定音视频流失败
  • 当一端退出房间后,另一段的PeerConnection要关闭重建,否则与新用户互通时媒体协商会失败
  • 异步事件处理