流媒体协议RTSP中篇之SDP(二)

SDP秘书的自述:公司没有老板可以转,但没有我,公司连仓库有啥都不知道~

一、SDP(Session Description Protocol):会话描述协议

SDP是一个文本协议,作用就是阐述信息,其扩展性非常强,在SIP协议,RTSP协议、HTTP协议中都有用到。但因为sdp只是个文本协议,所以必须搭配其它协议使用。同时SDP的字段名称只能使⽤US-ASCII字符集,⽂本信息可使⽤任何语⾔进行描述。

SDP区分会话信息和媒体信息
会话信息:会话的版本、会话名称、会话时间、补充信息等
媒体信息: 媒体名称(video/audio)、媒体格式(H264/H264)、媒体编号(PT)、补充信息等

在这里插入图片描述

二、SDP的键值宝宝们
1.SDP键值宝宝们的格式
SDP是通过多⾏⽂本的方式来传递信息

每⾏格式为: “字段名=字段值” 可以理解为键值对的形式。
格式要求:
1.字段名只能使用⼀个字符表示
2.⼤⼩写敏感,例:m和M表示不同信息
3.字段值可以有多个信息块组成,⽤分号隔开,例如下图
在这里插入图片描述
4.“=”左右不能有空格。

2.SDP的宝宝也有亲属之别
1)亲孩子 — 每个SDP都必需携带的字段
会话信息:
v= 协议版本号
o= 会话源或者会话⽣成者,以及会话标识符
s= 发送端的应用名称
t= 会话时间 ----> 可通过该字段描述会话开始时间与结束时间。
媒体信息:
m= 媒体 ----> 该字段可⽤来指明媒体类型、传输端⼝,传输协议以及媒体格式(例如video 0 RTP/AVT 96),同时该字段也是会话信息和媒体信息的分界线。

2)寄养的孩子 — SDP可选择是否携带的字段

会话信息和媒体信息共有字段:
**a= **,,该字段最为重要,可以用来补充会话和媒体的额外信息
b=(带宽信息)指明带宽需求,单位kbit/s, 可⽤于两个级别
i=(会话信息)对字段的⽂本描述,提供了⽐会话名称更多的信息。该字段既可以⽤于会话级也可以⽤于媒体级。
k=(加密密钥)为了对媒体加密、解密,该字段提供了⼀个加密密钥或者规定了⼀个获取密钥的机制。可⽤于两个级别。
c=(连接信息)该字段提供连接数据,包括连接类型、⽹络类型和连接地址。可应⽤于会话级也可以⽤于媒体级。

会话信息独有字段
u=(描述的URI地址)URI信息,通过这个地址可以获取更多会话相关信息。例如,⼀个会议可能公布在WEB⻚⾯上,所以需要该WEB的URI。每个会话只能提供⼀个URI
E=(E-mail地址)负责会话个体的E-mail地址,可以有多个。只能⽤于会话级别。
p=(电话号码)同email⼀样,多个,会话级别。
r=(重复次数)如果是有规律的⽇程安排活动,这个字段⽤来指明会话重复频次和时间。
z=(时区调整)⽤于按⽇程安排的有规律活动会话。会话可能会夸时区,避免时区变更造成的混乱。

3.键值顺序决定归属
因为有些字段是会话信息和媒体信息公有的,所以字段的顺序很重要.
例如a= 当m=出现之后,所有在m=后面a=字段都是用来补充媒体信息的,
m= 之前的a=都是补充会话信息

字段顺序:
会话信息:
协议版本号(v)
会话源(o)
会话名称(s)
会话信息(i)(可选)
URI(u)(可选)
E-mail地址(e)(可选)
电话号码(p)(可选)
连接信息(c)(可选)
带宽信息(b)(可选)
时间描述(t)
重复信息(r)(可选)
时区调整(z)(可选)
加密密钥(k)(可选)
属性(a)(可选)
媒体信息:
媒体描述(m)
媒体信息(i)(可选)
连接信息(c)(会话级进⾏了规定,这⾥可选)
带宽信息(b)(可选)
加密密钥(k)(可选)
属性(a)(可选)

三、SDP实际报文分析
在这里插入图片描述
会话信息:
v=0 会话版本描述
o=2252xxxx xxxx IN IP4 0.0.0.0 session描述,前面的数字是sessionID, IN表示因特网(internet),IP4 表示IPV4 0.0.0.0是IP
s=Media Server 服务器名称
C=IN IP4 0.0.0.0 连接信息,同o
t=0 0 开始时间0 结束时间 0
a=control 控制协议
a=rtppayload-supported:DH 动态协议
a=ranget:npt=now 时间为现在
媒体信息:
m=video 0 RTP/AVP 96 表示视频流的pt=96,且通过UDP传输
a=control:trackID=0
a=framerate:25.0000 帧率25
a=rtpmap:96 H264/90000 96为视频流,视频编码格式为H264,时间戳单位是90000,动态载荷下该描述是必须的
a=fmtp:96 xxxx 视频描述的补充信息
a=recvonly 表示spd的发送者只想接受数据,而不会发送数据(sendonly则相反)

猜你喜欢

转载自blog.csdn.net/weixin_42764231/article/details/127947349