9. Indicating Capabilities (指示能力)
9. Indicating Capabilities (指示能力)
在发送 Offer 之前, 若可知 Offer 中的媒体格式是否为 Answerer 所接受, 会很有帮助。某些协议 (如 SIP (Session Initiation Protocol, 会话初始协议)) 提供了查询此类能力的手段。SDP 可用于对此类查询的响应中以指示能力。本节描述如何格式化此类 SDP 消息。由于 SDP 无法表明该消息用于能力指示, 这一点由上层协议的上下文决定。基线 SDP 表达能力的手段非常有限, 无法表达允许的参数范围或取值, 也无法与 Offer/Answer 本身并行进行。未来扩展可能会解决这些限制。
为指示媒体能力而构造的 SDP 结构如下。其必须是有效的 SDP, 但可以省略 e= 与 p= 行。t= 行必须等于 0 0。对实现所支持的每一种媒体类型, 必须有一条相应类型的媒体描述。origin 字段中的 session ID (会话 ID) 对每一份用于指示媒体能力的 SDP 必须唯一。端口必须置为零, 但连接地址可为任意值。使用端口零可确保: 若将面向能力的 SDP 误当作 Offer 或 Answer 解释, 也不会建立媒体流。
m= 行中的传输 (transport) 部分指明该媒体类型的传输。对实现所支持的该类型的每一种媒体格式, 应该在 m= 行中列出一种格式。在 RTP 的情况下, 若使用动态负载类型, 必须存在 rtpmap 属性以将类型绑定到具体格式。无法表达诸如某一编解码器可同时支持多少路流等约束。
v=0
o=carol 28908764872 28908764872 IN IP4 100.3.6.6
s=-
t=0 0
c=IN IP4 192.0.2.4
m=audio 0 RTP/AVP 0 1 3
a=rtpmap:0 PCMU/8000
a=rtpmap:1 1016/8000
a=rtpmap:3 GSM/8000
m=video 0 RTP/AVP 31 34
a=rtpmap:31 H261/90000
a=rtpmap:34 H263/90000
图 1: 指示能力的 SDP
图 1 中的 SDP 表明该实现可以支持三种音频编解码器 (PCMU, 1016 与 GSM) 以及两种视频编解码器 (H.261 与 H.263)。