跳到主要内容

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).