第五章新国标GB28181(2016)补充
讨论合作: Q:1015787417 测试demo: http://download.csdn.net/download/qq_24798461/9820447
5.1 信令控制
5.1.1 注册与状态处理
5.1.1.1注册和注销基本要求:
GB28181-2016增加了注册处理中刷新注册、注册失败处理、注册过期处理、状态处理等方面的要求;
SIP客户端、网关、SIP设备、联网系统等SIP代理(SIP UA)使用IETF RFC 3261中定义的方法REGISTER进行注册和注销。注册和注销时应进行认证,认证方式应支持数字摘要认证方式,高安全级别的宜支持数字证书的认证方式,数字证书的格式符合附录I中的规定。
SIP代理在注册过期时间到来之前,应向注册服务器进行刷新注册,刷新注册消息流程应与9.1.2.1的流程描述一致,并遵循IETF RFC 3261对刷新注册的规定。
若注册失败,SIP代理应间隔一定时间后继续发起注册过程,与上一次注册时间间隔应可调,一般情况下不应短于60s。
系统、设备注册过期时间应可配置,缺省值为86400s(1天),应在注册过期时间到来之前发送刷新注册消息,为SIP服务器预留适当刷新注册处理时间,注册过期时间不应短于3600s。
SIP代理注册成功则认为SIP服务器为在线状态,注册失败则认为SIP服务器为离线状态;SIP服务器在SIP代理注册成功后认为其为在线状态,SIP代理注册过期则认为其为离线状态。
5.1.2 媒体流保活机制
5.1.2.1实时媒体流保活机制:
实时视音频点播的SIP消息应通过本域或其他域的SIP服务器进行路由、转发,目标设备的实时视音频流宜通过本域内的媒体服务器进行转发。
实时视音频点播采用SIP协议(IETF RFC 3261)中的INVITE方法实现会话连接,采用RTP/RTCP协议(IETF RFC 3550)实现媒体传输。
实时视音频点播的信令流程分为客户端主动发起和第三方呼叫控制两种方式,联网系统可选择其中一种或两种结合的实现方式。第三方呼叫控制的第三方控制者宜采用背靠背用户代理实现。
补充:平台、设备媒体实时流保活机制规定如下:
a)链路建立后,码流经过的各级平台应具备媒体流丢失监测能力,若监测到媒体流丢失,应释放该条媒体链路,并通过会话内Bye消息通知上下级平台;
b)上下级平台之间、平台与设备之间、平台与客户端之间应通过注册、状态信息报送等进行状态监测,若监测到媒体流接收方或媒体流发送方故障或离线,应主动释放媒体链路,停止媒体流的发送;
c)通过Subject标识进行已发送流的清理判断。上级平台向下级平台、平台向设备发送呼叫请求时,应携带Subject头域,Subject头域的“媒体流发送者ID:发送方媒体流序列号”用于对媒体源标识,此标识与请求的码流具有对应关系。下级平台、设备在接收到呼叫请求后,应判断是否在发送以此媒体源标识的码流,若已经在发送,则应释放现有媒体流发送链路并按照请求建立新的媒体流发送链路。
5.1.2.2历史视音频的回放:
应采用SIP协议(IETF RFC 3261)中的INVITE方法实现会话连接,采用SIP扩展协议(IETF RFC 2976)INFO方法的消息体携带视音频回放控制命令,采用RTP/RTCP协议(IETF RFC 3550)实现媒体传输。媒体回放控制命令引用MANSRTSP协议中的PLAY,PAUSE,TEARDOWN 的请求消息和应答消息。
历史媒体回放的信令流程分为客户端主动发起和第三方呼叫控制两种方式,联网系统可选择其中一种或两种结合的实现方式。第三方呼叫控制的第三方控制者宜采用背靠背用户代理实现。
媒体流接收者可以是包括SIP客户端、SIP设备(如视频解码器),媒体流发送者可以是SIP设备、网关、媒体服务器。
5.1.2.2.1命令的名称和说明:
媒体回放控制命令由客户端到服务器的请求消息和由服务器到客户端的应答消息完成,请求和应答引用RTSP(IETF RFC 2326)协议中的部分请求和应答消息格式。
消息包括一起始行,一个或多个消息头(message header)、一个表示标题头结束的空行(即CRLF前没有内容的行)和一个消息体(可选)。
message = start-line
message header
CRLF
[message body]
消息有请求和应答两种,在每对请求—应答消息中,应包含相同的CSeq头域,具体描述如下:
a) 请求
请求消息的起始行格式为Method SP RTSP-Version CRLF
其中 Method:请求命令; SP:空白符;RTSP-Version:协议版本号; CR:回车; LF:换行;
请求命令包括: PLAY,PAUSE,TEARDOWN;
b) 应答
应答消息的起始行格式为:
Status-Line = RTSP-Version SP Status-Code SP Reason-Phrase CRLF
其中 RTSP-Version:协议版本号;Status-Code:3位状态码,用于回应请求时表示主机状态 ; Reason-Phrase:是与状态码对应的文本解释。
5.1.2.2.2 命令定义
5.1.2.2.2.1 媒体播放命令
客户端发送PLAY 请求消息,请求服务器发送媒体。应支持Range头,在Range头中给出播放时间范围,播放指定时间段的媒体,见IETF RFC 2326的12.29;时间范围应支持npt,smpte相对时间戳范围。服务器的响应消息中给出RTP-Info头信息,见IETF RFC 2326的12.33。
Range 头取值为“ntp=now-”,不携带Scale头,表示从暂停位置以原倍速恢复播放。
示例:
PLAY RTSP/1.0
CSeq: 2
Range: npt=now-
5.1.2.2.2.2 暂停播放命令
客户端发送PAUSE 请求消息,请求服务器暂停发送媒体,但不释放资源。见IETF RFC 2326的10.6。
PauseTime取值固定为“now”,表示视频停止在当前位置。
示例:
PAUSE RTSP/1.0
CSeq: 1
PauseTime: now
5.1.2.2.2.3 快进/慢进命令
在客户端发送的PLAY 请求消息中,应使用Scale头来控制播放的快慢,见IETF RFC 2326的12.34。Scale为1,正常播放;不等于1,为正常播放速率的倍数;负数为倒放。
快进/ 慢进命令应只携带Scale头,表示从当前位置开始以指定的倍速播放,不携带Range头。
示例:
PLAY RTSP/1.0
CSeq: 3
Scale: 2.0
5.1.2.2.2.4 随机拖放命令
在客户端发送的PLAY 请求消息中,应支持Range头域,使用smpte相对时间戳范围,实现随机拖放播放,表示按当前播放速度跳转到Range头指定的时间点,不携带Scale头。
示例:
PLAY RTSP/1.0
CSeq: 4
Range: npt=100-
5.1.2.2.2.5 停止命令
客户端发送TEARDOWN请求消息,停止发送指定流,结束会话,并释放资源。
5.1.2.22.6 应答命令
客户端、服务器端应支持应答命令的状态码200,4XX以及5XX。见IETF RFC 2326。
5.1.2.22.7 Scale和Range头域取值范围
Scale头应支持的基本取值为0.25,0.5,1,2,4。
Range头的值为播放录像起点的相对值,取值范围为0到播放录像的终点时间,参数以s为单位,不能为负值。如Range头的值为0,则表示从起点开始播放,Range头的值为100,则表示从录像起点后的100s处开始播放,Range头的取值为now表示从当前位置开始播放。
5.1.2.3视音频文件下载
SIP服务器接收到媒体接收者发送的视音频文件下载请求后向媒体流发送者发送媒体文件下载命令,媒体流发送者采用RTP将视频流传输给媒体流接收者,媒体流接收者直接将视频流保存为媒体文件。媒体流接收者可以是用户客户端或联网系统,媒体流发送者可以是媒体设备或联网系统。
媒体流接收者或SIP服务器可通过配置查询(见9.5.3.4)等方式获取媒体流发送者支持的下载发送倍速,并在请求的SDP消息体中携带指定下载倍速(见附录F)。媒体流发送者可在Invite请求对应的200 OK响应SDP消息体中扩展携带下载文件的大小参数(见附录F),以便于媒体流接收者计算下载进度,当媒体流发送者不能提供文件大小参数时,媒体流接收者应支持根据码流中取得的时间计算下载进度。
5.1.3 订阅通知
5.1.3.1移动设备订阅通知
事件订阅流程示意描述如下:
a) 1:事件观察者向事件源发送SUBSCRIBE请求,请求消息体携带订阅参数;
b) 2:事件源应将订阅成功与否的响应消息返回给该事件观察者。
5.1.3.2协议接口:
消息头Content-type字段为Content-type: Application/ MANSCDP+xml。
报警事件订阅流程中的请求命令、响应命令消息体采用MANSCDP协议格式定义。
a) 移动设备位置数据查询:
b) b)移动设备位置数据应答:
< element name="CmdType" fixed ="MobilePosition" />
5.1.4 功能性命令的添加
5.2 媒体处理
5.2.1 SDP参数补充
5.2.1.1SDP定义
联网系统中SIP消息体中携带的SDP内容应符合IETF RFC 2327 - SDP Session Description Protocol的相关要求。应有如下字段:
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 description:
t= (time the session is active)
Media description
m= (media name and transport address)
c=* (connection information - optional if included at session-level)
b=* (bandwidth information)
a=* (zero or more media attribute lines)
y=*(SSRC)
f=*(媒体描述)
说明:
a字段:启用IETF RFC 4566中对a字段的定义【a=rtpmap:
例如: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字段可携带SVC参数,用于视频传输时的分辨率或帧频控制。格式如下:
a=svcspace:空域编码方式(取值为整型。空域编码方式,取值0:不使用;1:1级增强(1个增强层);2:2级增强(2个增强层);3:3级增强(3个增强层))
a=svctime:时域编码方式(取值为整型。时域编码方式,取值0:不使用;1:1级增强(1个增强层);2:2级增强(2个增强层);3:3级增强(3个增强层))
s字段:在向SIP服务器和媒体流接收者/媒体流发送者之间的SIP消息中,使用s字段标识请求媒体流的操作类型。“Play”代表实时点播;“Playback”代表历史回放;“Download”代表文件下载;“Talk”代表语音对讲。
u字段:u行应填写视音频文件的URI。该URI取值有两种方式:简捷方式和普通方式。简捷方式直接采用产生该历史媒体的媒体源(如某个摄像头)的设备ID(应符合6.1.2的规定)以及相关参数,参数用“:”分隔;普通方式采用http://存储设备ID[/文件夹]* /文件名,[/文件夹]*为0-N级文件夹。
m字段:m字段描述媒体的媒体类型,端口,传输层协议,负载类型等内容。媒体类型采用“video”标识传输视频或视音频混合内容,采用“audio”标识传输音频内容;传输方式采用“RTP/AVP”标识传输层协议为RTP over UDP,采用“TCP/RTP/AVP”标识传输层协议为RTP over TCP。
例如:
“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 8000 RTP/AVP 8”标识媒体类型为音频,传输端口为8000,采用RTP over UDP传输方式,负载类型为8。
t字段:当回放或下载时, t行值为开始时间和结束时间,用“ ”分隔,时间格式见IETF RFC 4566的5.9,采用UNIX时间戳,即从1970年1月1日开始的相对时间。开始时间和结束时间均为要回放或下载的音视频文件录制时间段中的某个时刻。
y字段:为十进制整数字符串,表示SSRC值。格式如下:dddddddddd。其中,第1位为历史或实时媒体流的标识位,0为实时,1为历史;第2位至第6位取20位SIP监控域ID之中的4到8位作为域标识;例如“13010000002000000001”中取数字“10000”;第7位至第10位作为域内媒体流标识,是一个与当前域内产生的媒体流SSRC值后4位不重复的四位十进制整数。
f字段: f = v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
各项具体含义:
v:后续参数为视频的参数;各参数间以 “/”分割;
编码格式:十进制整数字符串表示
1 –MPEG-4 2 –H.264 3 – SVAC 4 –3GP
分辨率:十进制整数字符串表示
1 – QCIF 2 – CIF 3 – 4CIF 4 – D1 5 –720P 6 –1080P/I
帧率:十进制整数字符串表示 0~99
码率类型:十进制整数字符串表示
1 – 固定码率(CBR) 2 – 可变码率(VBR)
码率大小:十进制整数字符串表示 0~100000(如 1表示1kbps)
a:后续参数为音频的参数;各参数间以 “/”分割;
编码格式:十进制整数字符串表示
1 – G.711 2 – G.723.1 3 – G.729 4 – G.722.1
码率大小:十进制整数字符串
音频编码码率: 1 — 5.3 kbps (注:G.723.1中使用)
2 — 6.3 kbps (注:G.723.1中使用)
3 — 8 kbps (注:G.729中使用)
4 — 16 kbps (注:G.722.1中使用)
5 — 24 kbps (注:G.722.1中使用)
6 — 32 kbps (注:G.722.1中使用)
7 — 48 kbps (注:G.722.1中使用)
8 — 64 kbps(注:G.711中使用)
采样率:十进制整数字符串表示
1 — 8 kHz(注:G.711/ G.723.1/ G.729中使用)
2—14 kHz(注:G.722.1中使用)
3—16 kHz(注:G.722.1中使用)
4—32 kHz(注:G.722.1中使用)
注1:字符串说明
本节中使用的“十进制整数字符串”的含义为“0”~“4294967296” 之间的十进制数字字符串。
注2:参数分割标识
各参数间以“/”分割,参数间的分割符“/”不能省略;
若两个分割符 “/”间的某参数为空时(即两个分割符 “/”直接将相连时)表示无该参数值;
注3:f字段说明
使用f字段时,应保证视频和音频参数的结构完整性,即在任何时候,f字段的结构都应是完整的结构:
f = v/编码格式/分辨率/帧率/码率类型/码率大小a/编码格式/码率大小/采样率
若只有视频时,音频中的各参数项可以不填写,但应保持 “a///”的结构:
f = v/编码格式/分辨率/帧率/码率类型/码率大小a///
若只有音频时也类似处理,视频中的各参数项可以不填写,但应保持 “v/////”的结构:
f = v/////a/编码格式/码率大小/采样率
f字段中视、音频参数段之间不需空格分割。
可使用f字段中的分辨率参数标识同一设备不同分辨率的码流。
注4: SSRC的使用
SSRC值由媒体流发送设备所在的SIP监控域产生,作为媒体流的标识使用。
a)点播域内设备媒体流SSRC处理方式
点播域内设备媒体流时,SSRC值由本域监控系统产生并通过Invite请求发送给设备使用,设备在回复的200OK消息中携带此值,设备在发送的媒体流中使用此值作为RTP的SSRC值。流程图见图F.1。
图 F.1 域内设备媒体流SSRC处理流程示意图
b)点播外域设备媒体流SSRC处理方式
点播外域设备媒体流时,SSRC由被点播域产生并在被点播域回复的200 OK SDP消息体中携带,被点播域发送的RTP码流使用该值作为SSRC值。流程图见图F.2。
图 F.2 外域设备媒体流SSRC处理流程示意图
注5:错误响应补充说明
当设备收到无法满足的SDP时,向发送的Invite请求方发送488错误响应消息;当设备不能满足更多的呼叫请求时,向发送的Invite请求方发送486错误响应消息。
5.2.2 PS封装描述补充
5.2.2.1 基于RTP的视音频数据PS封装
基于RTP的PS封装首先按照ISO/IEC 13818-1:2000将视音频流封装成PS包,再将PS包以负载的方式封装成RTP包。
进行PS封装时,应将每个视频帧封装为一个PS包,且每个关键帧的PS包中应包含系统头(System Header)和PSM(Program Stream Map),系统头和PSM放置于PS包头之后、第一个PES包之前。
典型的视频关键帧PS包结构如图C.1所示,其中PESV为视频PES包,PESA为音频PES包,视频非关键帧的PS包结构中一般不包含系统头和PSM。PS包中各部分的具体数据结构参见ISO/IEC 13818-1: 2000中的相关描述。
图C.1 典型的视频关键帧PS包结构
系统头应包含对PS包中码流种类的描述,其中视频和音频的流ID(stream_id)取值如下:
a) 视频流ID:0xE0;
b) 音频流ID:0xC0。
针对本文档规定的几种视音频格式,PSM中流类型(stream_type)的取值如下:
a) MPEG-4视频流:0x10;
b) H.264视频流:0x1B;
c) SVAC视频流:0x80;
d) G.711音频流:0x90;
e) G.722.1音频流:0x92;
f) G.723.1音频流:0x93;
g) G.729音频流:0x99;
h) SVAC音频流:0x9B。
PS包封装的其他具体技术规范详见ISO/IEC 13818-1:2000。
PS包的RTP封装格式参照IETF RFC2250,RTP的主要参数设置如下:
a) 负载类型(payload type):96;
b) 编码名称(encoding name):PS;
c) 时钟频率(clock rate):90kHz;
d) SDP描述中“m”字段的“media”项:video。
5.2.2.2 基于RTP的视音频基本流封装
该方式直接将视音频数据以负载的方式封装成RTP包。
5.2.2.2.1 MPEG-4视频流的RTP封装
MPEG-4视频流的RTP封装格式应符合IETF RFC 3016协议中的相关规定。
MPEG-4视频流RTP包的负载类型(Payload Type)标识号选定:从IETF RFC 3551协议的表5中的动态范围(96-127)中选择,建议定为97。
5.2.2.2.2 H.264视频流的RTP封装
H.264的RTP载荷格式应符合IETF RFC 3984中的相关规定。
H.264视频流RTP包的负载类型(Payload Type)标识号选定:从IETF RFC 3551协议的表5中的动态范围(96-127)中选择,建议定为98。
5.2.2.2.3 SVAC视频流的RTP封装
SVAC视频流的RTP载荷格式可参照IETF RFC 3984中的相关规定。
SVAC视频流RTP包的负载类型(Payload Type)标识号选定:从IETF RFC 3551协议的表5中的动态范围(96-127)中选择,建议定为99。
5.2.2.2.4 音频流的RTP封装
语音比特流宜采用标准的RTP协议进行打包。
在一个RTP包中,音频载荷数据应为整数个音频编码帧,且时间长度在20ms~180ms之间。
a) G.711的主要参数
G.711 A律语音编码RTP包的负载类型(Payload Type)的参数规定如下(见IETF RFC 3551中的表4):
1) 负载类型(PT):8;
2) 编码名称(encoding name):PCMA;
3) 时钟频率(clock rate):8kHz;
4) 通道数:1;
5) SDP描述中“m”字段的“media”项:audio。
b) SVAC音频的主要参数
SVAC语音编码RTP包的负载类型(Payload Type)的参数规定如下:
1) 负载类型(PT):20;
2) 编码名称(encoding name):SVACA;
3) 时钟频率(clock rate):8kHz;
4) 通道数:1;
5) SDP描述中“m”字段的“media”项:audio。
c) G.723.1的主要参数
G.723.1语音编码RTP包的负载类型(Payload Type)的参数规定参照IETF RFC 3551的表4中的G.723,具体如下:
1) 负载类型(PT):4;
2) 编码名称(encoding name):G723;
3) 时钟频率(clock rate):8kHz;
4) 通道数:1;
5) SDP描述中“m”字段的“media”项:audio。
d) G.729的主要参数
G.729语音编码RTP包的负载类型(Payload Type)的参数规定如下(见IETF RFC 3551中的表4):
1) 负载类型(PT):18;
2) 编码名称(encoding name):G729;
3) 时钟频率(clock rate):8kHz;
4) 通道数:1;
5) SDP描述中“m”字段的“media”项:audio。
e) G.722.1的主要参数
G.722.1语音编码RTP包的负载类型(Payload Type)的参数规定参照IETF RFC 3551的表4中的G.722,具体如下:
1) 负载类型(PT):9;
2) 编码名称(encoding name):G722;
3) 时钟频率(clock rate):8kHz;
4) 通道数:1;
SDP描述中“m”字段的“media”项:audio。
5.3 媒体传输
5.3.1 RTP OVER TCP传输模式
53.2 RTCP协议
5.4 新增功能模块
5.4.1 语音广播
5.4.2 语音对讲
如果大家有对接方面的问题欢迎咨询我的Chat快问: