メインコンテンツまでスキップ

5. SDP Specification (SDP规范)

SDP会话描述由媒体类型 "application/sdp" 表示(参见第8节)。

SDP会话描述完全使用UTF-8编码的ISO 10646字符集的文本形式。SDP字段名和属性名仅使用UTF-8的US-ASCII子集,但文本字段和属性值可以 (MAY) 使用完整的ISO 10646字符集。使用完整UTF-8字符集的字段和属性值永远不会被直接比较,因此不需要UTF-8规范化。选择文本形式(而不是二进制编码如ASN.1或XDR)是为了增强可移植性,支持各种传输方式,并允许使用灵活的基于文本的工具包来生成和处理会话描述。

SDP描述格式

SDP会话描述由多行文本组成,格式为:

<type>=<value>

其中 <type> 必须 (MUST) 是恰好一个区分大小写的字符,<value> 是结构化文本,其格式取决于 <type>

SDP描述结构

SDP会话描述由一个会话级部分和零个或多个媒体级部分组成。描述中的某些行是必需的 (REQUIRED),某些是可选的 (OPTIONAL),但所有行必须 (MUST) 按照这里给出的顺序出现。可选项用"*"标记。

会话描述 (Session description):

  • v= (协议版本)
  • o= (发起者和会话标识符)
  • s= (会话名称)
  • i=* (会话信息)
  • u=* (描述的URI)
  • e=* (电子邮件地址)
  • p=* (电话号码)
  • c=* (连接信息 - 如果所有媒体中都包含则不需要)
  • b=* (零个或多个带宽信息行)
  • 一个或多个时间描述 ("t=" 和 "r=" 行)
  • z=* (时区调整)
  • k=* (加密密钥)
  • a=* (零个或多个会话属性行)
  • 零个或多个媒体描述

时间描述 (Time description):

  • t= (会话活跃的时间)
  • r=* (零个或多个重复时间)

媒体描述 (Media description, if present):

  • m= (媒体名称和传输地址)
  • i=* (媒体标题)
  • c=* (连接信息 - 如果在会话级包含则可选)
  • b=* (零个或多个带宽信息行)
  • k=* (加密密钥)
  • a=* (零个或多个媒体属性行)

SDP示例

v=0
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.example.com/seminars/sdp.pdf
[email protected] (Jane Doe)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000

子章节

5.1 Protocol Version ("v=") (协议版本)

v=0

"v=" 字段给出会话描述协议的版本。本备忘录定义版本0。没有次版本号。

5.2 Origin ("o=") (发起者)

o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

"o=" 字段给出会话的发起者(其用户名和用户主机的地址)以及会话标识符和版本号。

5.3 Session Name ("s=") (会话名称)

s=<session name>

"s=" 字段是文本会话名称。每个会话描述必须 (MUST) 有且只有一个 "s=" 字段。

5.4 Session Information ("i=") (会话信息)

i=<session description>

"i=" 字段提供关于会话的文本信息。每个会话描述最多可以有一个会话级 "i=" 字段,每个媒体最多可以有一个 "i=" 字段。

5.5 URI ("u=")

u=<uri>

"u=" 字段包含指向会话更多信息的URI。

5.6 Email Address and Phone Number ("e=" and "p=") (电子邮件地址和电话号码)

e=<email-address>
p=<phone-number>

"e=" 字段包含负责会议的人员的电子邮件地址。"p=" 字段包含负责会议的人员的电话号码。

5.7 Connection Data ("c=") (连接数据)

c=<nettype> <addrtype> <connection-address>

"c=" 字段包含连接数据所需的信息。

5.8 Bandwidth ("b=") (带宽)

b=<bwtype>:<bandwidth>

"b=" 字段表示建议的会话带宽。

5.9 Timing ("t=") (时间)

t=<start-time> <stop-time>

"t=" 行指定会话的开始和停止时间。

5.10 Repeat Times ("r=") (重复时间)

r=<repeat interval> <active duration> <offsets from start-time>

"r=" 行指定重复会话的时间。

5.11 Time Zones ("z=") (时区)

z=<adjustment time> <offset> <adjustment time> <offset> ...

"z=" 行指定用于补偿夏令时或其他时区偏移变化的时区调整。

5.12 Encryption Keys ("k=") (加密密钥)

k=<method>
k=<method>:<encryption key>

"k=" 字段用于传达加密密钥。

5.13 Attributes ("a=") (属性)

a=<attribute>
a=<attribute>:<value>

属性是扩展SDP的主要手段。属性可以定义在会话级或媒体级。

5.14 Media Descriptions ("m=") (媒体描述)

m=<media> <port> <proto> <fmt> ...

媒体描述开始于 "m=" 行,包含足够的信息来描述媒体流。


注意: 第5章包含大量技术细节和ABNF语法定义。完整规范请参考 RFC 4566官方文档