DZ先生怪谈GB28181-2016之SDP

1. 自述

DZ先生今天主要讲的课题是SDP(session description protocol)会话描述协议。

2. SDP的定义

在这里有关SDP的定义,让我们来看下RFC4566(扩展更新了RFC2327)是如何定义的:

This memo defines the Session Description Protocol (SDP).  SDP isintended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of  multimedia session initiation.

翻译:本规范定义了会话描述协议(SDP),SDP是为了描述多媒体会话而设计的,主要用来描述会话通告,会话邀请或者其他形式的多媒体会话初始化。

DZ先生简单解释SDP干嘛用的:不同的厂家,使用GB对接的时候,上级要能正常看下级推送过来的摄像头的视频,回放,以及球机控制等等的功能。如果不能达成一致,那么某康,某华,某视,某达等等还不为了市场开干起来?

3. 字段解释(符合RFC4566)

       在进行国标对接最多的工程中,如公安,交通,学校,水利等的行业,所用到的视频厂家一般有海康,大华,宇视,工程师在完成国标对接成功后,一般需要验证的两大块业务为实况和回放。在不能实现这两块业务功能时候,这个时候就需要抓包排查了,而需要看字段就是SDP的字段了。以下为SDP定义的常用字段:

Session Description

v=protocol version

o=(owner/creator and session identifier)

s=session name

u=*(URI of description)

c=*(connection information-not required if included in all media)

Time Desctiption

t= (time the session is active)

Media description
m= (media name and transport address)
c= * (connectioninformation-optionalifincludedatsession-level)
a= * (zero or more mediaattributelines)
y= * (SSRC)

f= * (媒体描述)

说明:

Session Description

v=0 "v="字段给出了SDP的版本,当前规范版本是0,这个版本没有小号版本。

"o="源(发起者)<用户名><会话ID><会话版本><网络类型><地址类型><单播地址>

如32028100001320000001 0 0 IN IPV4 192.168.0.101

<用户名>用户登录的源主机名字,如果不能提供则用"-"表示,用户名不能包含空格。这里一般是摄像机的国标ID

<会话ID>是一个字符串,<用户名><会话ID><网络类型><单播地址>这个组合形成该会话的唯一标识。用0标识的居多

<会话版本>会话版本号,推荐使用NTP时间戳。用0标识的居多

<网络类型>目前是IN代表internet,未来可能会有其他值。

<地址类型>目前只有IPV4和IPV6两种,目前主要是IPV4,。

<单播地址>创建会话的主机地址。一般为媒体服务器的地址。

注意:有时候处于某种原因,用户名和IP不想明确表示,只要保证o字段全球唯一,用户名和IP可以随机。

"s="请求媒体流的操作类型,play 代表实况;playback代表回放。download代表下载,Talk代表语音。

"u=" 行应填写视音频文件的 URI。 URI 取值有两种方式: 简捷方式和普通方式

简捷方式常用   摄像机ID:其他参数格式。如32028100001320000001:10111

普通方式采用http://存储设备ID[/文件夹]* /文件名, [/文件夹]* 0-N 级文件夹。

"c="<网络类型><地址裂类型><链接地址>   如 IN IPV4 192.168.0.100

Time Description

t字段 在回放和下载时,t行值为开始时间和结束时间。使用的时间为UNIX时间戳,需要用UNIX时间戳转为北京时间。

工具UTCTime2.exe下载链接:链接:https://pan.baidu.com/s/1LP8rD1U7qVOzaiSEGyPu-A 密码:iw52 

Media description

m字段 描述媒体类型,媒体端口,媒体协议,以及媒体负载方式

例:

m=video 6000 RTP/AVP 96------媒体类型视频或视音频,传输端口6000,RTP over UDP,负载类型96

m=video 6000 TCP/RTP/AVP 96------媒体类型视频或视音频,传输端口6000,RTP over TCP,负载类型96

m=audio 6000 RTP/AVP 8------媒体类型为音频,传输端口6000,RTP over UDP,负载类型8

a字段:启用IETF RFC 4566 中对a 字段的定义a=rtpmap: <payload type> <encoding name>/<clockrate> [/<encoding parameters> ] 中的<encoding name> , 利用该属性携带编码器厂商名称(:企业1 或企业2 编码名称 DAHUA HIKVISION) 。 该属性表明该流为某厂商编码器编码且是不符
合本标准规定的媒体流
, 符合本标准规定的媒体流无需该属性
例如:a=rtpmap:96 DAHUA/90000;
a=rtpmap:96 HIKVISION/90000。
a
字段有下列格式:
———a
字段可携带倍速参数, 用于文件下载时控制下载进度格式如下:
a=downloadspeed:
下载倍速(取值为整型)
———a
字段可携带文件大小参数, 用于下载时的进度计算格式如下:
a=filesize:
文件大小(单位:Byte)
———a
字段可携带setup、connection 作为 TCP 连接协商参数, 用于 TCP 方式传输媒体流服务端
客户端的协商, 协商机制参考IETF RFC4571 的定义格式如下:
a=setup:TCP
连接方式(表示本 SDP 发送者在 RTP over TCP 连接建立时是主动还是被动发起 TCP 连接, “active”为主动, “passive”为被动)

a=connection:new (表示采用 RTP over TCP 传输时新建或重用原来的 TCP 连接, 可固定采用新建 TCP 连接的方式)

a=recvonly 只接受(收流端)只用于媒体,不用于控制协议

a=sendonly 只发送 (发刘端)只用于媒体,不用于控制协议

y字段:由10位十进制整数组成的字符串,表示SSRC值

第一位为0代表实况,为1则代表回放;

第二位至第六位由监控域ID的第4位到第8位组成;

最后4位为不重复的4个整数

4. SSRC的使用

SSRC 值由媒体流发送设备所在的SIP 监控域产生, 作为媒体流的标识使用点播域内设备点播外域设备媒体流SSRC 的处理方式分别说明如下:
a)
点播域内设备媒体流SSRC 处理方式
点播域内设备媒体流时
,SSRC 值由本域监控系统产生并通过Invite 请求发送给设备使用, 设备在回复的200OK 消息中携带此值, 设备在发送的媒体流中使用此值作为 RTP SSRC 。  如下图所示



b) 点播外域设备媒体流SSRC 处理方式

点播外域设备媒体流时,SSRC 由被点播域产生并在被点播域回复域发送的 RTP 码流使用该值作为SSRC 。 如下图所示 



5. 实例分析

5.1 UDP回放流程分析

组网:上级平台(192.168.0.1)---国标----(192.168.1.1)下级平台

上级媒体设备:192.168.0.10

下级媒体设备:192.168.1.10

INVITE消息如下:

v=0---协议版本为0,唯一版本,目前没有比这更小的了

o=32028104001322015132 0 0 IN IP4 192.168.0.10-----用户名(即摄像头国标ID),会话ID 0,会话版本0,网络类型IN,创建会话的主机地址(即SIP服务器的IP地址)

s=Playback-----请求媒体流操作类型是回放

u=32028104001322015132:17895----URL的简捷方式摄像头ID:参数

c=IN IP4 192.168.0.10----------------收流网络类型为IN,地址类型为IPV4,收流媒体设备IP192.168.0.10

t=1529935740 1529965483----------转化成北京时间,开始时间为2018/6/25 22:09:00;结束时间为2018/6/26  06:24:43

m=video 14430 RTP/AVP 96--------媒体流类型为视音频,端口14430,RTP负载UDP,负载类型96

a=recvonly--------------------------代表只接受模式(接受媒体流端)

a=rtpmap:96 PS/90000------------固定格式,负载类型96,编码格式PS,90000是时钟

y=1281002378---------------------第一位为1代表回放,2-6是来自监控域ID的4-8位,后4位随机不重复


200 OK消息如下:

v=0---目前为0,没有其他版本

o=32028104001322015132 0 0 IN IP4 192.168.0.10----上级访问的摄像头ID,会话ID,会话版本,网络类型,地址类型,会话创建主机的IP,这边即为上级媒体流服务器IP

s=Playback-----------请求媒体流操作类型是回放

c=IN IP4 192.168.1.10----下级发流端网络类型,地址类型和发流设备IP

t=1529935740 1529965483----回放的开始和结束时间

m=video 5694 RTP/AVP 96---媒体流类型,下级发流端口,RTP负载UDP,负载类型96

a=rtpmap:96 PS/90000---负载类型,编码格式,时钟

a=sendonly---------------下级是发流,这边的只发送模式,可以理解为发送端

y=1100005694-----------第一位为1代表回放,由于本组网类型属于上下级域的方式,所以这边的SSRC值由下级产生,和上级不一样。


5.2 TCP实况流程分析

组网:摄像头192.168.1.1----国标TCP接入-----192.168.0.1 SIP服务器

平台媒体服务器IP: 192.168.0.10

INVITE消息分析:

v=0----协议版本

o=32028100002000000000 0 0 IN IP4 192.168.0.10---此组网方式,用户名为本sip监控域ID,RFC4566中提到,只要保证o字段保证会话唯一,那么用户名和IP地址可以随机(取决于开发取字段)。

s=Play------请求视频流操作类型为play,代表是实况

c=IN IP4 192.168.0.10

t=0 0-------实况的开始时间和会话时间为0 0,表示会话永恒,实况都是被动终止的,否则会话始终生效

m=video 20622 TCP/RTP/AVP 96-------TCP/RTP/AVP RTP负载TCP,即收流类型为TCP

i=primary-----这边意义不大,可忽略,主要是为了方便阅读用的

a=recvonly

a=rtpmap:96 PS/90000

a=setup:active------------TCP建立连接方式为主动接受

a=connection:new--------可固定采用新建TCP的方式

y=0281002257-------------浏览本域上的摄像头,SSRC值由本监控域产生

200Ok 消息分析:

v=0

o=32028104561321000011 4031 4031 IN IP4 192.168.1.1

s=Play

c=IN IP4 192.168.1.1

t=0 0

m=video 15064 TCP/RTP/AVP 96

a=setup:passive-----TCP连接为被动,作为摄像机是被动发起实况连接的

a=sendonly

a=rtpmap:96 PS/90000

a=username:32028104561321000011----用户名(国标接入访问字段)

a=password:admin12345----------------摄像机网页登录密码

a=filesize:0-------------------------------没有下载文件,文件大小为0

y=0281002257----------------------------本组网方式,SSRC值来自上级监控域的SSRC值

f=


【文献来源】

《公共安全视频监控联网系统 信息传输交换控制技术要求 》

 RFC 4566 《session description protocol》

猜你喜欢

转载自blog.csdn.net/dzxs_gb28181/article/details/80951094