一、SDP协议介绍
SDP(Session Description Protocol)是一种描述会话(Session)的应用层控制协议,用于在多媒体通信中传递会话相关的信息。它被广泛应用于实时流媒体、视频会议、互联网电话等领域。为多媒体会话初始化、获取媒体编码信息等提供了描述。
二、SDP协议的格式
<type>=<value>
三、会话描述的参数
SDP会话描述由一个会话级描述和多个媒体级描述构成。
- 会话级:作用域是整个会话。从"v="行开始到下一个媒体描述为止。
- 媒体级:描述是对单个媒体流进行描述。从"m="行开始到下一个媒体描述为止。
1.Version(必选)
协议版本,不包括版本号
v=0
2.origion(必选)
对会话发起者的描绘
o=<username> <sessionid> <version> <network type> <address type> <address>
- < username >:用户的登录名。如果主机不支持这个,则为"-"。(不能含有空格)
- < sessionid >:会话id,唯一性。
- < version >:会话版本。
- < networktype >:网络类型,一般为"IN"。
- < addresstype >:地址类型,一般为"IP4"
- < address >:地址
3.Session Name(必选)
会话名称
s=<sessionname>
4.Connection Data(可选)
表示媒体的连接信息。会话声明中,会话级描述必须有 "c="或每个媒体级描述里有一个"c="项。当然两者之间都存在也可以。
c=<networktype> <address type> <connection address>
5.Bandwidth(可选)
带宽信息
b=<modifier>:<bandwidth-value>
6.Times(必选)
描述会话的开始时间和结束时间(两个都是NTP时间单位是秒)
t=<start time> <stop time>
< start time >和< stop time >都为0时表示持久的会话。如果只有< stop time >为 0,则过了starttime 依旧持续会话。
7.Media Announcements(必选)
媒体名称和传输地址。一个媒体描述以"m="开始到下一个"m="结束。
m=<media><port> <transport> <fmt list>
-
< media >:媒体类型,有"audio" “video” “application” “data” “control”。
-
< port >:媒体流发生传输层的端口。对于RTP偶数端口用来传输数据。
-
< transport >:传输协议,与c=行的地址类型有关。两种:RTP/AVP(RealtimeTransport Protocol using the Audio/Video profile carried over UDP)。
-
< fmt list >:媒体格式。但第一个为缺省值,分为静态绑定和动态绑定:静态绑定即媒体编码方式与RTP负载类型有确定的一一对应关系,动态绑定即媒体编码方式(如时钟频率,音频信道数等)没有完全确定,需要进一步的属性说明(用rtpmap)。
比如:m=video 0 RTP/AVP 96 a=rtpmap:96 h264/90000
8.rtpmap(可选)
a=rtpmap:<payload type><encoding name>/<clock rate>[/<encodingparameters>]