参考: sdp文件详细总结
原文链接:https://blog.csdn.net/zhangjikuan/article/details/27367437
1 SDP
会话描述协议,Session Description Protocal SDP包括以下一些方面:
(1)会话的名称和目的
(2)会话存活时间
(3)包含在会话中的媒体信息,包括:
媒体类型(video,audio, etc)
传输协议(RTP/UDP/IP,H.320, etc)
媒体格式(H.261video, MPEG video, etc)
多播或远端(单播)地址和端口
(4)为接收媒体而需的信息(addresses, ports, formats and so on)
(5)使用的带宽信息
(6)可信赖的接洽信息(Contact information)
说白了就是通信双方用SDP来描述通信过程中的采用什么协议 (用户TCP还是UDP),双方ip与port,发的数据是什么类型(视频还是音频)等等信息。字段很多,但是实际当中只需要重点关注几个即可。 SDP主要分为三大类:会话层、时间层、媒体层。
1.1 会话层
1.1.1 重点关注c字段,Connection Data
重点关注c字段,Connection Data c=* (connection information - notrequired if included in all media)表示媒体连接信息。 格式: c=(networktype) (address type)(connection address) network type:网络类型,一般为”IN”,表示”internet” address type:地址类型,一般为IP4。 connection address:应用程序必须处理域名和ip地址两种情形。单播时,为域名或ip地址,推荐使用域名;多播,为ip地址,且ip后面必须有TTL(取值范围是0-255),地址和TTL决定了多播包被传播的范围。例: c=IN IP4 224.2.1.1/127
- c字段的ip参数:如果是发送方,表明是从这个ip往出发;如果是接收方,表明在这个ip接受数据。
1.1.2 重点关注s字段,Session Name
只有一个s字段。表明会话的名称。 在gb28181中有play实时开流、playback回放、download下载、talk语音对讲。
1.2 时间层 RepeatTimesand Time Zones
只有一个字段t,是必须要的。 t=(start time)(stop time) 描述了会话的开始时间和结束时间。 GB28181中,实时都设置为0,录像回放时,为录像开始时间,结束时间。
1.3 媒体层
1.3.1 重点关注m字段,Media Announcements
一个会话描述包括几个媒体描述。一个媒体描述以”m=”开始到下一个”m=”结束。 m=(media)( port)( transport)( fmt list) media:表示媒体类型。有"audio", “video”,“application”(例白板信息), “data”(不向用户显示的数据) 和"control"(描述额外的控制通道)。
port:媒体流发往传输层的端口。取决于c=行规定的网络类型和接下来的传送层协议:对UDP为1024-65535;对于RTP,偶数端口被用来传输数据,奇数端口用来传输RTCP包。
transport:传输协议,与c=行的地址类型有关。两种: RTP/AVP,表示RealtimeTransport Protocol using the Audio/Video profile carried over UDP;UDP。
fmt list:媒体格式。对于音频和视频就是在RTP Audio/Video Profile定义的负载类型(payload type)。但第一个为缺省值,分为静态绑定和动态绑定:静态绑定即媒体编码方式与RTP负载类型有确定的一一对应关系,动态绑定即媒体编码方式(如时钟频率,音频信道数等)没有完全确定,需要进一步的属性说明(用rtpmap)。
1.3.2 重点关注a字段,zero or more media attributelines
a字段多用来补充扩展信息用,其中的rtpmap是来对m字段中的fmt list进一步说明的。 GB28181中对a字段进行了扩展,在下面有介绍。
2 GB28181 SDP的规定
y字段是存放 SSRC,十进制字符串,共10位,第一位0为实时,1为历史。2-6位为SIP监控域ID的4-8位,7-10位作为域内媒体流标识,是一个与当前域内产生的媒体流SSRC值后4位不重复的十进制数。
f字段是媒体描述 f=v/编码格式/分辨率/帧率/码率类型/码率大小 a/编码格式/码率大小/采样率
a字段除了和一般SDP都有的rtpmap之外还加了其他参数。
a=rtpmap:<负载类型> 编码名/速率 a=rtpmap:96 PS/90000 a=rtpmap:98 H264/90000 a=rtpmap:97 MPEG4/90000
如果请求某媒体流的方向为sendonly,那么响应中对应媒体的方向必须为recvonly; 如果请求某媒体流的方向为recvonly,那么响应中对应媒体的方向必须为sendonly; 如果请求某媒体流的方向为sendrecv,那么响应中对应媒体的方向可以sendrecv/sendonly/recvonly/inactive中的一种; 如果请求某媒体流的方向为inactive,那么响应中对应媒体的方向必须为inactive a=recvonly
2.1 具体GB28181的SDP
2.1.1 invite
2.1.2 200ok
|