ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
[TOC] ## RTCPeerConnection 基本函数 ``` pc = new RTCPeerConnection([configuration]); ``` ### configuration参数解析 **bundlePolicy**: ``` Balanced: 音频与视频轨使用各自的传输通道 max-compat:每个轨使用自己的传输通道 max-bundle:都绑定到同一个传输通道 ``` **ccertificates**:授权可以使用连接的一组证书 **iceCandidatePoolSize**:16位的整数值,用于指定预取的ICE候选者的个数。如果该值发生变化,他会触发重新收集候选者 **iceTransportPolicy**: ``` 指定ICE传输策略: * relay:只使用中继候选者 * all:可以使用任何类型的候选者 ``` **iceServers**: 其由RTCIceServer组成。每个RTCIceServer都是一个ICE代理的服务 | 属性 | 含义 | | --- | --- | | credential | 凭据,只有TURN服务使用 | | credentialType| 凭据类型可以password或oauth | |urls | 用于连接服务中的url数组 | | username | 用户名,只有TURN服务使用 | **rtcpMuxPolicy**: 该选项在收集ICE候选者时使用。 | 选项 |说明 | | --- | --- | | nagotiate | 收集RTCP与RTP复用的ICE候选者,如果RTCP能复用就与RTP复用,如果不能复用,就就将他们单独使用 | | require | 只能收集RTCP与RTP复用的ICE候选者,如果RTCP不能复用,则失败 | ## 媒体协商 ### addIceCandidate 基本格式 ``` aPromise = pc.addIceCandidate(candidate); ``` candidate | 属性 | 说明 | | --- | --- | | candidate | 候选者描述信息 | | sdpMid | 与候选者相关的媒体流的识别标签 | | sdpMLineIndex | 在SDP中m= 的索引值 | | usernameFragment | 包括了远端的唯一标识 | ### 媒体协商的过程 ![UTOOLS1591711647810.png](http://yanxuan.nosdn.127.net/2c219e38fa95e1473ae686699db63958.png) A 创建了一个offer包含sdp信息 setLocalDescription 拿到所有候选者。 接收Answer setRemoteDescription B 接收offer,包含sdp信息 setRemoteDescription 拿到所有候选者。 创建Answer setLocalDescription ### 协商状态变化 ### 媒体协商方法 * createOffer ``` aPromise = myPeerConnection.createOffer([option]); ``` * createAnswer ``` aPromise = myPeerConnection.createAnswer([option]); ``` * setLocalDescription ``` aPromise = myPeerConnection.setLocalDescription(sessionDescription); ``` * setRemoetDescription ``` aPromise = myPeerConnection.setRemoetDescription(sessionDescription); ``` ### Track方法 addTrack,基本格式: ``` rtpSender = myPc.addTrack(track, stream...); ``` Parameters | 参数 | 说明 | | --- | --- | | track | 添加到RTCPeerCOnnection中的媒体轨 | |stream| 指定track所在的stream| removeTrack,基本格式: ``` myPc.remoteTrack(trpSender); ``` 重要事件: * onnegotiationneeded:协商事件 * onicecandidate:候选者事件 ## Stream/Track ## 传输相关方法 ## 统计相关方法