跳到主要内容

4.1.8. createOffer

4.1.8. createOffer

createOffer 方法生成一个包含 [RFC3264] 中的 offer 的 SDP 块, 其中包含会话的支持配置, 包括添加到此 PeerConnection 的媒体的描述, 此实现支持的编解码器, RTP 和 RTCP 选项, 以及 ICE 代理收集的任何候选者。可以提供 options 参数以提供对生成的 offer 的额外控制。此 options 参数允许应用程序触发 ICE 重启, 以便重新建立连接。

在初始 offer 中, 生成的 SDP 将包含会话所需的所有功能(默认情况下支持但不需要的功能可以省略); 对于每个 SDP 行, SDP 的生成将遵循定义给定 SDP 行的规范中为生成初始 offer 定义的过程。第 5.2.1 节下面详细说明了初始 offer 生成的确切处理。

如果在会话建立后调用 createOffer, createOffer 将生成一个 offer 以根据对会话所做的任何更改修改当前会话, 例如添加或停止 RtpTransceiver, 或请求 ICE 重启。对于每个现有流, 每个 SDP 行的生成必须遵循指定给定 SDP 行的 RFC 中为生成更新的 offer 定义的过程。对于每个新流, SDP 的生成必须遵循生成初始 offer 的过程, 如上所述。如果未进行任何更改, 或者对于不受请求的更改影响的 SDP 行, offer 将仅包含上次 offer/answer 交换协商的参数。第 5.2.2 节下面详细说明了后续 offer 生成的确切处理。

createOffer 生成的会话描述必须可以立即被 setLocalDescription 使用; 如果系统资源有限(例如有限数量的解码器), createOffer 应该返回反映系统当前状态的 offer, 以便 setLocalDescription 在尝试获取这些资源时会成功。

调用此方法可能会执行诸如生成新 ICE 凭据之类的操作, 但它不会更改 PeerConnection 状态, 触发候选者收集或导致媒体开始或停止流动。具体来说, offer 不会被应用, 并且在调用 setLocalDescription 之前不会成为待处理的本地描述。