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要关闭重建,否则与新用户互通时媒体协商会失败
- 异步事件处理