跳到主要内容

3.4.1. RtpTransceivers

3.4.1. RtpTransceivers

RtpTransceivers 允许应用程序控制与一个 "m=" 段相关联的 RTP 媒体。每个 RtpTransceiver 都有一个 RtpSender 和一个 RtpReceiver, 应用程序可以使用它们来控制 RTP 媒体的发送和接收。应用程序还可以直接修改 RtpTransceiver, 例如停止它。

RtpTransceivers 通常与 "m=" 段具有 1:1 的映射关系, 尽管当 RtpTransceivers 被创建但尚未与 "m=" 段关联时, 或者如果 RtpTransceivers 已停止并与 "m=" 段解除关联时, 可能会有比 "m=" 段更多的 RtpTransceivers。如果 RtpTransceiver 的媒体标识 (mid) 属性非空, 则称其与 "m=" 段关联; 否则, 称其为解除关联。关联的 "m=" 段使用 transceivers 和 "m=" 段索引之间的映射来确定, 该映射在创建 offer 或应用远程 offer 时形成。

RtpTransceiver 永远不会与多个 "m=" 段关联, 一旦应用会话描述, "m=" 段始终与恰好一个 RtpTransceiver 关联。然而, 在某些情况下, 当 "m=" 段被拒绝时 (如下文第 5.2.2 节所述), 该 "m=" 段将被 "回收" 并与具有新 MID 值的新 RtpTransceiver 关联。

RtpTransceivers 可以由应用程序显式创建, 也可以通过使用添加新 "m=" 段的 offer 调用 setRemoteDescription 来隐式创建。