SDP协议介绍

SDP:Session Description Protocol

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。


示例:
v=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
   其中:nettype是IN,代表internet,addrtype是IP4或IP6。unicast-address任务创建计算机的地址。
   整个这个属性,是唯一表示一个任务。


e=123@126.com 或 p=+1 616 555-6011
对于一个任务只能两者之中的一个,表示会议控制者的联系方式。邮件地址可以是[email]j.doe@example.com[/email] (Jane Doe)形式,括号里面的是描述联系人的名称,或者Jane Doe <[email]j.doe@example.com[/email]>,前面的是联系人的名称。


c=<nettype> <addrtype> <connection-address>
这个连接数据,可以是传话级别的连接数据,或者是单独一个媒体数据的连接数据。在是多播时,connection-address就该是一个多播组地址,当是单播时,connection-address就该是一个单播地址。对于addrtype是IP4的情况下,connection-address不仅包含IP地址,并且还要包含a time to live value(TTL 0-255),如:c=IN IP4 224.2.36.42/128,IP6没有这个TTL值。还允许象这样的<base multicast address>[/<ttl>]/<number of addresses>格式的connection-address。如:c=IN IP4 224.2.1.1/127/3等同于包含c=IN IP4 224.2.1.1/127, c=IN IP4 224.2.1.2/127, c=IN IP4 224.2.1.3/127三行内容。


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。 




国标中的SDP描述:


SDP定义

联网系统中SIP消息体中携带的SDP内容应符合IETF RFC 2327的相关要求。应有如下字段:
Session description:
v一(protocol version)
o一(owner/creator and session identifier).
s一(session na rile)
u一*(URI of description)
c一*(connection information not required if included in all media)
Time description:
t一(time the session is active)
Media description
m一(media name and transport address)
c一*(connection information optional if included at session—level)
b一*rbandwidth information)
a一*f zero or more media attribute lines)
y一*(SSRC)
f_*(媒体描述)


说明:
a字段:启用IETF RFC 4566中对a字段的定义【a—rtpmap:<payload type)<encoding name)/
(clock rate)E/(encoding parameters)] 中的(encoding name),利用该属性携带编码器厂商名称(如:
大华或海康编码名称DAHUA或HIKVlSlON)。该属性表明该流为某厂商编码器编码且是不符合本
标准规定的媒体流,符合本标准规定的媒体流无需该属性。
例如:a—rtpmap:96 DAHUA/90000;
a—rtpmap:96 H1KVISION/90000。
s字段:使用s字段标识请求媒体流的操作类型。“Play”代表实时点播;“Playback”代表历史回放;
“Download”代表文件下载。
u字段:u行应填写视音频文件的URI。该URl取值有两种方式:简捷方式和普通方式。简捷方式
直接采用产生该历史媒体的媒体源(如某个摄像头)的设备ID(应符合6、1.2的规定)以及相关参数,参
数用“:”分隔;普通方式采用http://存储设备ID[/文件夹]*/文件名,[/文件夹]*为o~N级文件夹。
t字段:当回放或下载时,t行值为开始时问和结束时间,用⋯’分隔,时间格式见IETF RFC 4566
的5.9,开始时问和结束时间均为要回放或下载的音视频文件录制时间段中的某个时刻。
Y字段:为十进制整数字符串,表示SSRC值。格式如下:Dddddddddd(第一位为历史或实时媒体
流的标识位,1为历史,0为实时)。
f字段:f--v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
各项具体含义:
——v:后续参数为视频的参数;各参数问以“/”分割;

——编码格式(十进制整数字符串表示):
1:MPEG~4;2:H.264;3:SVAC;4:3GP。
—分辨率(十进制整数字符串表示):
1:QCIF;2:CIF;3:4CIF;4:D1;5:720P;6:1080P/1。
——帧率(十进制整数字符串表示):o~99
——码率类型(十进制整数字符串表示):
1:固定码率(CBR);2:可变码率(VBR)。
一~码率大小(十进制整数字符串表示):o~100000(如1表示1 kbps)
——a:后续参数为音频的参数t各参数间以⋯/’分割;
——编码格式(十进制整数字符串表示):
l:G.711;2:G.723.1;3:G.729;4:G.722.1。
一码率大小(十进制整数字符串):
音频编码码率:1:5.3 kbps(G.723.1中使用);
2:6.3 kbps(G.723.1中使用);
3:8 kbps(G.729中使用);
4:1 6 kbps(G.722.1中使用);
5:24 kbps(G.722.1中使用);
6:32 kbps(G.722.1中使用);
7:48 kbps(G.722.1中使用);
8:64 kbps(G.71l中使用)。
~采样率(十进制整数字符串表示):
1:8 kHz(G.71l、G.723.1或G.729中使用);
2:14 kHz(G.722.1中使用);
3:16 kHz(G.722.1中使用);
4:32 kHz(G.722.1中使用)。
注1:字符串说明
本节中使用的“十进制整数字符串”的含义为⋯o’~“4294967296”之间的十进制数字字符串。
注2:参数分割标识
各参数间以“/”分割,参数间的分割符“/”不能省略;若两个分割符⋯/’间的某参数为空时(即两个分割符“/”
直接将相连时)表示无该参数值;
注3:f字段说明
使用f字段时,应保证视频和音频参数的结构完整性,即在任何时候,f字段的结构都应是完整的结构:
kv/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大4'/采样率
若只有视频时,音频中的各参数项可以不填写,但应保持“a///”的结构:
f—v/编码格式/分辨率/帧率/码率类型/码率大小a///
若只有音频时也类似处理,视频中的各参数项可以不填写,但应保持“v/////”的结构:
{一v/////a/编码格式/码率大d"/采样率
f字段中视、音频参数段之间不需空格分割。
注4:SSRC的使用
SIP服务器产生SSRC值,并在发往视频输出(解码器)的Invite中携带这个值.视频输出(解码器)返回的200
OK中带回该值。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值