在 SIP 协议详解 中提到过一种Sip body消息体格式message/sdp,这一节来了解一下SDP消息格式。
SDP(Session Description Protocol)是一种会话描述协议,由RFC4566规范定义。其采用文本消息的格式,用于描述多媒体会话的参数和配置信息。
SDP用于在互联网上传输多媒体会话的配置信息,常见于音视频、实时通信会话等。SDP协议提供一种灵活且可扩展的机制,通过在会话的参与者之间交换和传递SDP会话描述信息,实现多媒体会话参数与配置的协商和管理。这种机制为多媒体会话的协商与管理提供了完备的解决方案。
SDP是一种纯粹的会话描述的格式,并非传输协议,在会话配置信息的交换上,依赖其他传输协议(例如:SIP、HTTP)来完成。
SDP is purely a format for session description -- it does not incorporate a transport protocol, and it is intended to use different transport protocols as appropriate, including the SAP(Session Announcement Protocol) ,SIP(Session Initiation Protocol) , RTSP(Real Time Streaming Protocol) ,electronic mail using the MIME extensions, and the Hypertext Transport Protocol.
- SDP协议结构
- SDP协议举例
一、协议结构
SDP 会话描述由会话描述部分(Session description)和后跟零个或多个媒体描述部分(Media description)组成。会话描述部分以“v=”行开始,并继续到第一个媒体描述部分。每个媒体描述部分都以“m=”行开始,并继续到下一个媒体描述部分或整个会话描述的末尾。
An SDP session description consists of a session-level section followed by zero or more media-level sections. The session-level part starts with a "v=" line and continues to the first media-level section. Each media-level section starts with an "m=" line and continues to the next media-level section or end of the whole session description. In general, session-level values are the default for all media unless overridden by an equivalent media-level value.
SDP协议构成如下图所示:
1.1 Session description
Type |
含义 |
解释 |
举例 |
v |
protocol version |
SDP协议版本号 |
v=0 |
o |
origion |
会话发起者的描述 |
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5 |
o={用户名}{session id} {会话版本} {网络类型}{地址类型}{地址} |
|||
s |
Session Name |
会话名称(在整个会话中有且只有一个 s= )。 |
s=描述会话的简短名称。 |
s=SDP Seminar |
|||
i |
session information |
会话的描述信息 |
i=提供对会话的更详细描述 |
i=A Seminar on the session description protocol |
|||
u |
URI |
会话补充信息的指针(可选字段) |
u={uri} |
u=http://www.example.com/test/sdp.pdf |
|||
e |
Email Address |
会话负责人的联系信息(可选字段) |
e={email} |
e=j.doe@example.com (Jane Doe) 或 |
|||
e=Jane Doe <j.doe@example.com\> |
|||
p |
Phone Number |
会话负责人的联系信息(可选字段) |
p= |
p=+86 187xxxxxxxx |
|||
c |
Connection Data |
连接信息:包括类型和地址等信息 |
c=IN IP4 10.47.16.5 |
(在Session description中包含单个“c=”字段 或 每个Media description中至少包含一个“c=”字段) |
c={IN:网络类型} {IP4:地址类型} {IP地址} |
||
b |
Bandwidth |
带宽要求(每秒千比特) |
b={bwtype}:{bandwidth} |
bwtype取值CT或AS。CT代表总带宽数字,AS代表单个媒体的带宽数字。 |
b=CT:128 |
||
z |
Time Zones |
若安排一个同处于冬季和夏季的会话,必须明确指定会话是按照哪个时区安排的。 |
z={adjustment time} {offset} {adjustment time} {offset} …. |
z=2882844526 -1h 2898848070 0 |
|||
k |
Encryption Keys |
加密密钥(不再建议使用) |
k=base64:{编码的加密密钥} |
k=uri:{获取密钥的uri} |
|||
k=提示(加入会话时,用于提示用户输入密钥) |
|||
a |
Attributes |
会话或媒体的属性(开发者可根据需要新增属性类型) |
a={flag} 或 a={attribute}:{value} |
a=rtpmap:0 PCMU/8000 (指定了媒体格式信息) |
1.2 Time description
Type |
含义 |
解释 |
举例 |
t |
Timing |
会话的起始和结束时间 |
t=2873397496 2873404696 |
t={开始时间} {结束时间} |
|||
r |
Repeat Times |
重复次数 |
r={repeat interval} {active duration} {offsets from start-time} |
r={重复间隔}{活动时长}{启动时间偏移} |
1.3 Media description
Type |
含义 |
解释 |
举例 |
m |
Media Descriptions |
媒体描述:包括媒体类型、端口号、传输协议和格式等信息 |
m=video 49170/2 RTP/AVP 31 |
b |
Bandwidth |
带宽要求(每秒千比特) |
b={bwtype}:{bandwidth} |
二、协议举例
SDP配置信息举例
SDP会话描述配置信息举例如下所示:
SDP举例:
// Session description
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/test/sdp.pdf
e=j.doe@example.com (Jane Doe)
c=IN IP4 224.2.17.12/127
// Time description
t=2873397496 2873404696
a=recvonly
// Media description
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000