rtsp学习

1. sdp

通过AVP后面的值判断当前的payload,

2. scrop-parameter-sets后面接的是':',而不是'=',

3.例子

v=0
o=- 2890844256 2890842807 IN IP4 204.34.34.32
s=I came from a web page
t=0 0
c=IN IP4 0.0.0.0
m=video 8002 RTP/AVP 31
a=control:rtsp://audio.com/movie.aud
m=audio 8004 RTP/AVP 3
a=control:rtsp://video.com/movie.vid

如下解释:

Protocol Version
      v=<version>       
//  v=0
      v:该SDP协议的版本号

Origin
   o=<username> <session id> <version> <network type> <address type><address>
// o=- 2890844256 2890842807 IN IP4 204.34.34.32
   o:标示了该会话的全局唯一性
   <username>:用于登陆创建主机的ID,若该主机不支持侧应为"-",该字段内不能包含空格
   <session id>:用于唯一的标示该会话描述,建议采用Network Time Protocol (NTP)的时间戳来保证唯一性
   <version>:该公告的版本号,用于区别同个会话内的多个公告
   <network type>:网络类型 IN(Internet)
   <address type>:地址类型 IP4/IP6
   <address>:该会话创建者的地址

Session Name
   s=<session name>

// s=I came from a web page
   s:会话名,每个会话仅有一个

Times, Repeat Times and Time Zones
   t=<start time>  <stop time>
// t=0 0
   t:描述该会议的开始和结束时间,如果该会议在多个不规则的时间间隔内激活,可以使用多行t:描述如果时间间隔为规则的,可以使用"r="重复定义。
   <start time>:开始时间,以秒表示的NTP时间,开始结束时间都为0时被认为时永久的会议
   <stop time>:结束时间,以秒表示的NTP时间,结束时间为0时,该会议直到过了开始时间才开始

Connection Data
   c=<network type> <address type> <connection address>
// c=IN IP4 0.0.0.0
   c:连接数据,每个会话公告应包含一个连接描述在每个媒体描述中,
   单播的时候通过该IP地址发送,多播时通过TTL与IP地址共同决定那些包将被发送
   <connection address>:IP addr/TTL[/IP NUMS] example:192.168.1.2/127[/2],单播[多播]
   IP address together with TTL define which muticast pakets will be sent in this conference.

Media Announcements
   m=<media> <port> <transport> <fmt list>
   每个会话可以包含许多的媒体描述,
   <media>:媒体类型,包括audio/video/application/data/control,
   (音频/视频/应用[如:白板信息]/数据[不要向用户显示]/控制)
   当有新的媒体类型出项时,这些值将被扩展。
   <port>:端口类型,该值的确定取决于对应的"c="域中指定的网络
   和在第三个子项中定义的传输协议,UDP端口只能在1024-65535之间
   RTP端口可以是任意有效的范围,RTCP端口定义为大于对应RTP端口的奇数
   当分级的多个媒体流编码通过单一的地址发送时,我们必须指定多个端口用于传输。
   采用跟"c="域中定义多个IP地址的格式一样,
   m=<media> <port>/<number of ports> <transport> <fmt list>
   example:  m=video 49170/2 RTP/AVP 31
   定义了两对的RTP/RTCP端口,49170 19171和49172 49173
   <transport>:传输协议类型,该项的值依赖于"c="域中的网络类型IP4
   如果某个应用采用在UDP上使用单一组合了所,有媒体格式和传输协议的模式传输,简单的方法是将传输协议指定为UDP,采用格式列表区别组合的协议,区别传输类型和媒体格式是必要的。

<fmt list>:格式列表,对音频和视频应用,该值表示媒体的有效负荷类型
   一旦这个格式列表被限定,在这个会话过程中都将使用列表里面的有效负荷类型
   ,但第一个类型将被作为默认值。
   如果媒体流的传输模式不是RTP/UDP,格式将在附加的文件中进行定义。
   如果通过RTP传输,SDP可以提供静态和动态绑定的两种RTP编码有效负荷类型。
   静态绑定类型的类型值提供确定的有效负荷类型,动态绑定必须通过后续的选项
   来进一步的说明。
   例如:m=video 49232 RTP/AVP 0 //定义负荷类型为0的媒体流从49232端口发送
            m=video 49232 RTP/AVP 98
         a=rtpmap:98 L16/16000/2 //采用采样频率为16KHZ 16bit的立体声线性编码       
     rtpmap属性对"m="描述的格式列表的负荷类型进行详细说明,
     通用的rtpmap属性的格式为:
     a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encoding parameters>]
     <payload type>
     <encoding name>:编码名,扩展的用X-开始
     <clock rate>:采样频率
     <encoding parameters>:对语音编码来说,该参数表示语音声道。
     对视频编码不提供该参数。
     RTP格式列表没提供对每个媒体包包括几个采样点进行说明,
     如果没有默认值,需要通过"ptime"说明。

 

你可能感兴趣的:(rtsp学习)