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"说明。