2. The MSID Mechanism (MSID 机制)
本文档定义了一种新的 SDP [RFC4566] 媒体级 msid 属性. 该新属性允许端点将分属不同媒体描述的 RTP 流与正确的 MediaStream 关联, 如 [W3C-WebRTC] 所定义. 它还允许端点在 appdata 字段中为每个 MediaStreamTrack 携带一个标识符.
msid 属性的值由一个标识符和一个可选的 appdata 字段组成.
属性名为 msid.
属性的值由下列 ABNF [RFC5234] 文法规定:
msid-value = msid-id [ SP msid-appdata ]
msid-id = 1*64token-char ; see RFC 4566
msid-appdata = 1*64token-char ; see RFC 4566
标识符为 examplefoo 且应用数据为 examplebar 的分组, 其 msid 值示例如下:
msid:examplefoo examplebar
标识符是由 1 至 64 个字符组成的 ASCII 字符串, 字符在 token 中合法.
应用数据 (msid-appdata) 与标识符位于同一行, 以空格与标识符分隔.
标识符 (msid-id) 在 SDP 描述的作用域内唯一标识一个分组.
单个媒体描述中可以有多个 msid 属性. 这表示单个 MediaStreamTrack 出现在多个 MediaStream 中的情况; 所有出现处的 msid-appdata 值必须相同.
不允许存在多个媒体描述具有相同的 msid-id 与 msid-appdata 值.
端点可以随时更新由 msid 属性表达的 RTP 流之间的关联.
msid 属性依赖于 RTP 流与媒体描述的关联, 而不依赖于 RTP 流与 RTP 传输的关联. 因此, 其 Mux Category (如 [RFC8859] 所定义) 为 NORMAL; 决定 msid 属性的过程不必考虑 RTP 流是否被捆绑 (bundle).