搜索
您的当前位置:首页SDP协议详细介绍

SDP协议详细介绍

来源:乌哈旅游

  

一、SDP协议介绍

SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。SDP 不支持会话内容或媒体编码的协商,所以在流媒体中只用来描述媒体信息。媒体协商这一块要用来实现.

二、SDP协议格式

SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。

<type>=<value>[CRLF]

常见的fields有:

三、SDP协议例子:

下面是一个helix 流媒体服务器的RTSP协议中的SDP协议:

v=0 //SDP version

// o field定义的源的一些信息。其格式为:o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>

o=- 1271659412 1271659412 IN IP4 10.56.136.37 s=<No title>

i=<No author> <No copyright>  //session的信息

c=IN IP4 0.0.0.0

t=0 0 //时间信息,分别表示开始的时间和结束的时间,一般在流媒体的直播的时移中见的比较多。

a=SdpplinVersion:1610641560 //描述性的信息

a=StreamCount:integer;2 //用来描述媒体流的信息,表示有两个媒体流。integer表示信息的格式为整数。

a=control:*

a=DefaultLicenseValue:integer;0 //License信息

a=FileType:string;"MPEG4" 用来描述媒体流的信息说明当前协商的文件是mpeg4格式的文件

a=LicenseKey:string;"license.Summary.Datatypes.RealMPEG4.Enabled"

a=range:npt=0-72.080000  //用来表示媒体流的长度

m=audio 0 /AVP 96 //做为媒体描述信息的重要组成部分描述了媒体信息的详细内容:表示session的audio是通过来格式传送的,其payload值为96传送的端口还没有定。

b=as:24 //audio 的bitrate

b=RR:1800

b=RS:600

a=control:streamid=1  //通过媒体流1来发送音频

a=range:npt=0-72.080000 //说明媒体流的长度。

a=length:npt=72.080000

a=rtpmap:96 MPEG4-GENERIC/32000/2 //rtpmap的信息,表示音频为AAC的其sample为32000

a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1210 //config为AAC的详细格式信息

a=mimetype:string;"audio/MPEG4-GENERIC"

a=Helix-Adaptation-Support:1

a=AvgBitRate:integer;48000

a=HasOutOfOrderTS:integer;1

a=MaxBitRate:integer;48000

a=Preroll:integer;1000

a=OpaqueData:buffer;"A4CAgCIAAAAEgICAFEAVABgAAAC7gAAAu4AFgICAAhKIBoCAgAEC"

a=StreamName:string;"Audio Track"

下面是video的信息基本和audio的信息相对称,这里就不再说了。

m=video 0 /AVP 97

b=as:150

b=RR:11250

b=RS:3750

a=control:streamid=2

a=range:npt=0-72.080000

a=length:npt=72.080000

a=rtpmap:97 MP4V-ES/2500

a=fmtp:97 profile-level-id=1;

a=mimetype:string;"video/MP4V-ES"

a=Helix-Adaptation-Support:1

a=AvgBitRate:integer;300000

a=HasOutOfOrderTS:integer;1

a=Height:integer;240 //影片的长度

a=MaxBitRate:integer;300000

a=MaxPacketSize:integer;1400

a=Preroll:integer;1000

a=Width:integer;320  //影片的宽度

a=OpaqueData:buffer;"AzcAAB8ELyARAbd0AAST4AAEk+AFIAAAAbDzAAABtQ7gQMDPAAABAAAAASAAhED6KFAg8KIfBgEC"

a=StreamName:string;"Video Track"

++++++++++++++++++++++++++++++++++++++++++++


注:v,o,s,t,m为必须的,其他项为可选。  
如果SDP语法分析器不能识别某一类型(Type),则整个描述丢失;
如果”a=”的某属性值不理解,则予以丢失
整个协议区分大小写
“=”两侧不允许有空格
会话级的描述就是媒体级描述的缺省值
所有均格式为<type>=<value>

如时钟频率,音频信道数等)没有完全确定,需要进一步的属性说明。分别举例如下:
Alaw的PCM编码单信道Audio,其净荷类型号为8,把它发往UDP端口49232,则:m=audio 49232 RTP/AVP 8 
16bit线性编码,双声道立体声,抽样速率16kHz,其动态净荷类型号98,则:m=audio 49232 RTP/AVP 98
a=rtpmap:98 L16/16000/2
说明:1)a=rtpmap:<净荷类型号><编码名>/<时钟速率>[/<编码参数>]
               对音频,编码参数为音频信道数;对视频没有定义
          2)SDP允许rtpmap规定实验性编码格式,但编码名必须以X-起,表示此格式还没正式登记。



浅议SDP(会话描述协议)

 
标签: 

 

分类: 

因为最近常常使用到SDP(会话描述协议Session Description Protocol)写了一些SDP的文本,在linux里使用例如"ffplay test.sdp"来播放媒体流,今天想简单谈谈SDP,做了一个小小的总结和分析,希望对大家有帮助。

一、SDP协议介绍


    SDP是会话描述协议的缩写,是描述流媒体初始化参数的格式,由IETF作为RFC 4566颁布。流媒体是指在传输过程中看到或听到的内容,SDP包通常包括以下信息:


二、SDP协议格式

SDP格式:
       Session description
          v=   (protocol version)
          o=   (owner/creator and session identifier)
          s=   (session name)
          i=* (session information)
          u=* (URI of description)
          e=* (email address)
          p=* (phone number)
          c=* (connection information - not required if included in all media)
          b=* (zero or more bandwidth information lines)
          One or more time descriptions ("t=" and "r=" lines, see below)
          z=* (time zone adjustments)
          k=* (encryption key)
          a=* (zero or more session attribute lines)
          Zero or more media descriptions

       Time description
          t=   (time the session is active)
          r=* (zero or more repeat times)

       Media description, if present
          m=   (media name and transport address)
          i=* (media title)
          c=* (connection information - optional if included at
               session-level)
          b=* (zero or more bandwidth information lines)
          k=* (encryption key)
          a=* (zero or more media attribute lines)

以上带"*"号的是可选的,其余的是必须的。一般顺序也按照上面的顺序来排列。

a=*是sdp协议扩展属性定义,除上面以外的,分解时其它的都可以扔掉。
a=charset属性指定协议使用的字符集。一般的是ISO-10646。


b=<bwtype>:<bandwidth> bwtype可以是CT或AS,CT方式是设置整个会议的带宽,AS是设置单个会话的带宽。缺省带宽是千比特每秒。
t=<start-time> <stop-time>,这个可以有行,指定多个不规则时间段,如果是规则的时间段,则r=属性可以使用。start-time和stop-time都遵从NTP(Network Time Protocol),是以秒为单位,自从1900以来的时间。要转换为UNIX时间,减去2208988800。如果stop-time设置为0,则会话没有时间限制。如果start-time也设置为0,则会话被认为是永久的。


r=<repeat-interval> <active duration> <offsets from start-time>重复次数在时间表示里面可以如下表示:
       d - days (86400 seconds)
       h - hours (3600 seconds)
       m - minutes (60 seconds)
       s - seconds (allowed for completeness)
z=<adjustment time> <offset> <adjustment time> <offset> ....
k=<method>
k=<method>:<encryption key>
a=<attribute>
a=<attribute>:<value>
m=<media> <port> <proto> <fmt> ...
m=<media> <port>/<number of ports> <proto> <fmt> ...
其中:<media>可以是,"audio","video", "text", "application" and "message"。<port>是媒体传送的端口号,它依赖于c=和<proto>。<proto> 可以是,udp,RTP/AVP和RTP/SAVP。


a=cat:<category>分类,根据分类接收者隔离相应的会话
a=keywds:<keywords>关键字,根据关键字隔离相应的会话
a=tool:<name and version of tool>创建任务描述的工具的名称及版本号
a=ptime:<packet time>在一个包里面的以毫秒为单位的媒体长度
a=maxptime:<maximum packet time>以毫秒为单位,能够压缩进一个包的媒体量。
a=rtpmap:<payload type> <encoding name>/<clock rate> [/<encoding    parameters>]
a=recvonly
a=sendrecv
a=sendonly
a=inactive,
a=orient:<orientation>其可能的值,"portrait", "landscape" and "seascape" 。
a=type:<conference type>,建议值是,"broadcast", "meeting", "moderated", "test" and "H332"。
a=charset:<character set>
a=sdplang:<language tag>指定会话或者是媒体级别使用的语言
a=framerate:<frame rate>设置最大视频帧速率
a=quality:<quality>值是0-10
a=fmtp:<format> <format specific parameters>

在SIP协议的包含的内容是SDP时,应该把Content-Type设置成application/sdp。
 


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SIP SAP及SDP协议组合应用的研究 

  
  摘 要 SIP、SAP、SDP是NGN与3Tnet中涉及的重要协议。本文在介绍与分析SIP 
、SAP、SDP协议的基础上,给出了一个基于三种协议组合而实现的多媒体会议应用 
实例。 
  
  关键词 SIP SAP SDP 
  
  1 引 言 
  
  SIP(Session Initiation Protocol,会话初始协议)、SAP(Session Annou 
ncement Protocol,会话通告协议)、SDP(Session Description Protocol,会话 
描述协议)是三个与会话(Session)有关的既有联系又有区别的RFC协议。在本文 
中,我们将对这三个协议做简单分析并给出一个利用这三个协议实现的具有一定实 
用价值的多媒体应用。 
  
  2 协议分析 
  
  2.1 SIP协议介绍与分析 
  
  会话初始协议(SIP)是一信令协议用于初始、管理和终止分组网络中的语音和 
视频会话,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话。SI 
P是互联网工程任务组(IETF)多媒体数据和控制体系结构的一个组成部分,因此它 
与IETF的许多其他协议都有联系,例如RTP(实时传输协议)和本文提到的SAP、SD 
P协议。 
  
  SIP主要提供了与会话建立和终结相关的五个方面功能,它们是: 
  
  (1)用户定位:用于通信的终端系统的决定; 
  
  (2)用户可用性:被呼叫方参与通信的意愿的决定; 
  
  (3)用户能力:使用的媒体和媒体参数的决定; 
  
  (4)会话建立:“振铃”,呼叫和被呼叫方会话参数的建立; 
  
  (5)会话管理:包括转移和终结会话,修改会话参数,以及调用业务等。 
  
  SIP网络由四种类型的逻辑SIP实体组成。每一实体具有特定的功能,并且作为 
客户机(初始请求),或作为服务器(响应请求),或作为两者的结合参与到SIP通 
信中。一个“物理设备”能够具有多于一个逻辑SIP实体的功能性。例如,作为代理 
服务器的网络服务器可同时具备注册服务器的功能。 
  
  下面是四种功能实体: 
  
  (1)用户代理 
  
  在SIP中,用户代理(UA)是端点实体。用户代理通过交换请求和响应初始和终 
止会话。UA作为一应用程序,它包含用户代理客户机和用户代理服务器,如下: 
  
  · 用户代理客户机(UAC):客户机应用程序,它初始SIP请求。 
  
  · 用户代理服务器(UAS):服务器应用程序,当接收到SIP请求时它联系用户 
并且代表用户返回一响应。 
  
  在SIP网络中具有UA功能的设备是:工作站,IP电话,电话网关,呼叫代理,自 
动应答服务。 
  
  (2)代理服务器 
  
  代理服务器是同时作为服务器和客户机的中间实体,其目的是代表其他客户机 
生成请求。请求被内部处理或可能在翻译之后将其传递到其他服务器。如果需要, 
代理在转发之前可解释和重写请求消息。 
  
  (3)重定向服务器 
  
  重定向服务器接受SIP请求,并将被呼叫方的SIP地址映射成零个(如果没有可 
知地址)或更多的新地址并且将它们返回客户机。不像代理服务器,重定向服务器 
不传递请求到其他服务器。 
  
  (4)注册服务器 
  
  注册服务器是接受REGISTER请求的服务器,其目的是根据用户在请求中规定的 
联系信息更新位置数据库。 
  
  SIP通过E-mail形式的地址来标明用户地址。每一用户通过一等级化的URL来标 
识,它通过诸如用户电话号码或主机名等元素来构造(例如:SIP:user@company. 
com)。因为它与E-mail地址的相似性,SIP URLs容易与用户的E-mail地址关联。 
  
  SIP有两种类型的消息,它们是: 
  
  (1)请求:从客户机发到服务器的消息。 
  
  (2)响应:从服务器发到客户机的消息。 
  
  其中请求消息包括: 
  
  · INVITE:初始呼叫,改变所以参数(re-INVITE)。 
  
  · ACK:确认INVITE的最终应答。 
  
  · BYE:终止呼叫。 
  
  · CANCEL:撤消搜索和振玲。 
  
  · OPTIONS:查询另一方能力。 
  
  · REGISTER:注册位置服务。 
  
  · INFO:发送会话中信息而不改变会话状态。 
  
  · PRACK:与ACK作用相同,但是用于临时响应。 
  
  · SUBSCRIBE:该方法用来向远端端点预订其状态变化的通知。 
  
  · NOTIFY:该方法发送消息以通知预订者它所预定的状态的变化。 
  
  · UPDATE:允许客户更新一个会话的参数而不影响该会话的当前状态。 
  
  · MESSAGE:通过在其请求体中承载即时消息内容实现即时消息。 
  
  · REFER:其功能是指示接受方通过使用在请求中提供的联系地址信息联系第 
三方。 
  
  响应消息包含数字响应代码。SIP响应代码集部分基于HTTP响应代码。有两种类 
型的响应,它们是: 
  
  · 临时响应(1XX):临时响应被服务器用来指示进程,但是不终结SIP事物。 
  
  
  · 最终响应(2XX,3XX,4XX,5XX,6XX):最终响应终止SIP事物。 
  
  每条SIP消息由以下三部分组成: 
  
  (1)起始行(Start Line):每个SIP消息由起始行开始。起始行传达消息类 
型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请 
求行(请求)或状态行(响应)。 
  
  (2)SIP头:用来传递消息属性和修改消息意义。它们在语法和语义上与HTTP 
头域相同(实际上有些头就是借自HTTP),并且总是保持格式:<名字>:<值>。 
  
  (3)消息体:用于描述被初始的会话(例如,在多媒体会话中包括音频和视频 
编码类型,采样率等)。消息体能够显示在请求与响应中。SIP清晰区别了在SIP起 
始行和头中传递的信令信息与在SIP范围之外的会话描述信息。可能的体类型就包括 
本文将要描述的SDP会话描述协议。 
  
  2.2 SAP协议介绍与分析 
  
  SAP的全称是会话通告协议,其目的是为了通知一个多播的多媒体会议或其他多 
播会话而将相关的会话建立信息发送给所期望的会议参与者。SAP协议本身并不建立 
会话,它只是将建立会话所必要的信息,例如所采取的视频或音频编码方式通知给 
其他在一个多播组内的参与者,当参与者接收到该通知数据包后就可以启动相应的 
工具并设置正确的参数向该会议的发起者建立会话了(建立会话可以使用SIP协议) 
。 
  
  通知的发起者并不知道各参与者是否收到了会话通知,也就是说每个参与者并 
不向通知发起者回复“我收到了通知”的确认;因此,通知发起者只能够通过周期 
性地发送这个会话通知从而最大可能地使参与者收到通知。 
  
  SAP并不是向每个参与者一一发通知数据包,它是通过多播的机制(multicast 
)向一个已知的多播地址和端口一次性发送一个通知数据包,该多播组内的成员如 
果工作正常的化就会收到该通知数据包。因此,为了使会议的参与者都能够接收到 
通知,就要确保其参加到该多播组内。  一个通知数据报除了可以通知某会话将 
要发起外,还可以通知该会话取消了或该会话的某些通信参数已被修改了。当然, 
这需要相应机制使这几个通知都是针对同一会话的。 
  
  那么SAP如何描述会话的相关信息,这就需要借助SDP协议了。在SAP数据包的p 
ayload字段中一般情况下填充的就是SDP数据,它描述了建立会话所必要的基本信息 
。 
  
  SDP将在1.3节中介绍。 
  
  2.3 SDP协议介绍与分析 
  
  上面介绍的两个协议都用到了SDP,实际上SDP就是用来描述多媒体会话通告, 
多媒体会话邀请和其他形式的多媒体会话初始化的协议。SDP包通常包括以下信息: 
  
  
  (1)会话信息 
  
  · 会话名和目的。 
  
  · 会话活动时间。 
  
  由于参与会话的资源是受限制的,因此包括以下附加信息是非常有用的。 
  
  · 会话使用的带宽信息。 
  
  · 会话负责人的联系信息。 
  
  (2)媒体信息 
  
  · 媒体类型,例如视频和音频。 
  
  · 传输协议,例如RTP/UDP/IP和H.320。 
  
  · 媒体格式,例如H.261视频和MPEG视频。 
  
  · 多播地址和媒体传输端口(IP多播会话)。 
  
  · 用于联系地址的媒体和传输端口的远端地址(IP单播会话)。 
  
  SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母 
,<值>是结构化的文本串,其格式依<类型>而定。 
  
  3 SAP、SIP、SDP组合应用实例 
  
  在这个应用实例中,我们设计了这样一种场景:某公司领导需要与本公司各部 
门负责人召开电视会议。他使用的多媒体会议系统采用了本文所描述的这种SAP、S 
IP、SDP组合应用技术。该公司领导首先通过一台具有Web浏览功能的客户机登陆会 
议服务器,注册一个会议。在注册的同时,他就将各部门负责人纳入了本次会议的 
参与者之列(当然,还需要该公司领导和各部门负责人的客户机在同一个多播组内 
)。然后,他在页面上点击一个“会议通知”按钮,会议服务器就通过SAP协议向本 
次会议的各参与者(包括公司领导和部门负责人)所在客户机发送召开会议的通知 
。此时,若各参与者所在客户机是正常的连接到网络上并且SAP通知接收器正常工作 
的话,它就会以声音或图形的方式通知该参与者,同时准备好本客户机参加此次会 
议的客户端程序。当各参与者发现会议通知后,他在已经准备好的会议客户端程序 
上点击一个“参加会议”的按钮,客户端就通过SIP协议将该客户机轻松地加入到会 
议之中。当参与者到齐后,在会议主席(公司领导)的控制下,此次会议就可以正 
式开始了。 
  
  各参与者客户机上的SAP通知接收器接收到会议通知后,它会尽可能地调用客户 
机上的各种资源以满足本次会议的要求,如果实在不能够满足的话,它也可以以书 
面形式通知参与者本机所缺的资源。在整个会议的SAP、SIP交互过程中都用到了SD 
P协议来描述会话和媒体信息。简要流程如附图所示。 
  
  4 结束语 
  
  SAP、SIP、SDP都不是孤立的协议,只有在相互组合与协调并且与其他协议配合 
的情况下,才能够发挥它们应有的强大作用。本文给出了SAP、SIP、SDP组合应用的 
一个实例,这样的应用其实还很多,例如将本文的技术稍加改动也可用于楼宇的多 
点视频自动监控系统中。随着上述协议的进一步发展和普及,我们坚信SAP、SIP、 
SDP将会广泛地应用于NGN(下一代网络)、3Tnet(高性能宽带信息网)等宽带多媒 
体应用中。(强磊,硕士,中国电信股份有限公司研究院技术部,叶华,中国电信股 
份有限公司研究院技术部副部长 摘自《中国数据通信》) 

 


+++++++++++++++++++++++++++++++
假设主叫Alice 在她的提供中包含下列SDP 描述。其中包含一个双向音频流和两个双向视频流(视频流分别使用编解码H.261(载荷类型31)和MPEG (载荷类型32 。
v=0
o=alice 2890844526 2890844526 IN IP4 host.anywhere.com (用户名,会话id,版本,。。。。)
s=
c=IN IP4 host.anywhere.com
t=0 0 (起始时间,终止时间)
m=audio 49170 RTP/AVP 0 (净荷类型是0 ,发往UDP协议的49170端口)
a=rtpmap:0 PCMU/8000 (双声道 净荷类型0 时钟频率8000每秒,RTP类型编码)
m=video 51372 RTP/AVP 31
a=rtpmap:31 H261/90000
m=video 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000
--------------------------------------------------------------------------------------------------
被叫Bob 不希望接收或发送第一个视频流,那么他将在应答中返回如下SDP:
v=0
o=bob 2890844730 2890844730 IN IP4 host.example.com
s=
c=IN IP4 host.example.com
t=0 0
m=audio 49920 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 0 RTP/AVP 31 (如果不希望接收其中的一个流,就在返回中把他的端口设置为0,其他的媒体流必须按原来返回)
m=video 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000
----------------------------------------------------------------------------------------------------
之后的某个时刻,Bob 想改变音频流的接收端口(从49920 改为65422),同时增加另外一个只收音频流,并使用RTP 载荷类型,那么Bob 将在提供中包含如下SDP:
v=0
o=bob 2890844730 2890844731 IN IP4 host.example.com (会话号要自动加一)
s=
c=IN IP4 host.example.com
t=0 0
m=audio 65422 RTP/AVP 0 (把49920改为65422端口)
a=rtpmap:0 PCMU/8000
m=video 0 RTP/AVP 31
m=video 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000
m=audio 51434 RTP/AVP 110 (增加只收的音频流,载荷类型为RTP)
a=rtpmap:110 telephone-events/8000
a=recvonly (只收模式)
---------------------------------------------------------------------------------------------------------
Alice 接收增加的媒体流,将产生如下应答:
v=0
o=alice 2890844526 2890844527 IN IP4 host.anywhere.com (会话号要自动加一)
s=
c=IN IP4 host.anywhere.com
t=0 0
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 0 RTP/AVP 31
a=rtpmap:31 H261/90000
m=video 53000 RTP/AVP 32
a=rtpmap:32 MPV/90000
m=audio 53122 RTP/AVP 110
a=rtpmap:110 telephone-events/8000
a=sendonly (只发模式)
--------------------------------------------------------


因篇幅问题不能全部显示,请点此查看更多更全内容

Top