对接国标的几个理由
1.国标28181是一个通用的标准,如果你想服务于公检法之类的政府视频平台,是绕不过国标的
2.国标28181的使用,意味着在这些平台通用,不需要改来改去
3.国标28181也意味着你的企业有了进入公检法的基本门槛
国标-码流规范
码流需要用ps流承载
截图国标的说明书
至于码流的详细分析如下
http://blog.csdn.net/chen495810242/article/details/39207305
国标-设备编码
所有的设备采用20 位编码表征,其中的11-13位表明id的身份,是用户,还是摄像头(132),还是服务器,
如果自己的id构造不正确是不能正常通过国标的sip的通信的
<Device Id="xxxxxxx00001327895126" Name="南天门" Status="ON"/>
<Device Id="XXXXXX00001327895127" Name="五指山" Status="ON"/>
<Device Id="XXXXXX00001327895128" Name="盘丝洞" Status="ON"/>
<Device Id="XXXXXX00001327895129" Name="东京" Status="ON"/>
<Device Id="XXXXXX00001327895131" Name="xxx" Status="ON"/>
详细见下文
国标-协议的使用
国标要求使用sip做相互通信的协议,好处就是,所有的设备(摄像头,服务器,代理服务器,用户终端)都分配一个id,
从设备的id能分析出设备信息,编制的时候的对应位置之类的
sip的扩展也是很容易,通信也很简单,并且有开源库osip2,exosip2的支持,集成也很容易
sip协议详解
https://www.ibm.com/developerworks/cn/opensource/os-cn-sip-intro/
国标-摄像头配置
首先需要配置摄像头支持gb28181,进入配置页面
sip的个列分析
http://blog.csdn.net/pengrui18/article/details/21563421
国标-流的传输
sip依靠代理服务器能做到p2p的传播,主要原因在于sip协议在协商的传输的过程中,记录了每个注册设备,用户的公网地址加端口的记录,
所以流的传播可以直接通过公网进行,屏蔽了局域网的局限,而且协商好了之后,服务器只在中间做消息的传播,流直接p2p,这样避免了传输级数的增加而带来的数据丢失的增加
下面是关于传输的一些讨论
http://blog.csdn.net/ljh081231/article/details/28898049
国标-对接流程
对接国标,要使用别的平台的标准流,工作需要
一般别的厂商已经把国标摄像头平台已经对接好了,
别的设备或者用户想接入有两种方式,
第一种摄像头的的接入,只能是下级,摄像头要主动向平台注册,然后等其他用户来拉流,处于随时待命状态,但是摄像头不能拉取设备列表,不能主动发起请求
第二种以国标平台的级联服务器的形式接入平台,然后其他的用户端(甚至我们自己的服务器本机)注册到自己的服务器平台,自己的服务器平台转发请求,这样的好处在于,你可以拉取设备列表,然后给每个用户,用户可以根据需要请求任意一个设备,相当于每个用户都有一份通讯录
也就是 用户-----------》自己服务器-------------》国标平台------》摄像头
应该就是sip的背靠背模式(虽然我们只用了单向的请求,可是理论上来讲可以实现双向的通信)
sip通信过程中,会把处于局域网里面的设备的地址修改,变成公网地址+端口,所以,能实现p2p通信
所以,请求成功,视频流数据不会经过两个服务器,直接设备到用户
还有目前很多平台都说自己是国标流,但是是不是很难讲,毕竟每过段时间国标也在修改,而且流里面有些位是可以变化的,所以看见很多厂商说自己是国标,一边私底下都想做一个自己的标准,不停地向别人推自己sdk,所以一个平台,用他平台的sdk解码是最好的
解码的话,大华,海康的播放器sdk都提供播放回调接口,直接朝里面扔一个个的RTP数据就可以,他会回调给你图片流
服务器为192.168.3.199 服务器id 34010000002000030199
客户端为192.168.3.111 用户id 34010000004000000001
客户端拉取流的过程如下
sip 111注册
REGISTER sip:34010000002000030199@192.168.3.199 SIP/2.0 Via: SIP/2.0/UDP 192.168.3.111:62475;rport;branch=z9hG4bK1295772622 From: <sip:34010000004000000001@3401000000>;tag=2211489183 To: <sip:34010000004000000001@3401000000> Call-ID: 3061738487 CSeq: 1 REGISTER Contact: <sip:34010000004000000001@192.168.3.111:62475;line=e8317b383eca8a3> Max-Forwards: 70 User-Agent: eXosip/4.1.0 Expires: 3600 Content-Length: 0
sip 199回应,未授权
SIP/2.0 401 Unauthorized Via: SIP/2.0/UDP 192.168.3.111:62475;rport=62475;branch=z9hG4bK1295772622 From: <sip:34010000004000000001@3401000000>;tag=2211489183 To: <sip:34010000004000000001@3401000000>;tag=3481274187 Call-ID: 3061738487 CSeq: 1 REGISTER User-Agent: SipSvr 1.0 WWW-Authenticate: Digest realm="3401000000", nonce="1524463850-6b981277faed8cb24f208ec4a2fb0d47" Content-Length: 0
sip 111再注册
REGISTER sip:34010000002000030199@192.168.3.199 SIP/2.0 Via: SIP/2.0/UDP 192.168.3.111:62475;rport;branch=z9hG4bK19408890 From: <sip:34010000004000000001@3401000000>;tag=2211489183 To: <sip:34010000004000000001@3401000000> Call-ID: 3061738487 CSeq: 2 REGISTER Contact: <sip:34010000004000000001@192.168.3.111:62475;line=e8317b383eca8a3> Authorization: Digest username="34010000004000000001", realm="3401000000", nonce="1524463850-6b981277faed8cb24f208ec4a2fb0d47", uri="sip:34010000002000030199@192.168.3.199", response="98d81f717359bf945ac0efa4792068be", algorithm=MD5 Max-Forwards: 70 User-Agent: eXosip/4.1.0 Expires: 90 Content-Length: 0
199回应,注册成功
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.3.111:62475;rport=62475;branch=z9hG4bK19408890 From: <sip:34010000004000000001@3401000000>;tag=2211489183 To: <sip:34010000004000000001@3401000000>;tag=2160197076 Call-ID: 3061738487 CSeq: 2 REGISTER User-Agent: SipSvr 1.0 Expires: 3600 Date: 2018-04-23T14:10:50.535 TimeRevise: 20180423141050 Content-Length: 0
111 请求流
INVITE sip:34010000002000030199@192.168.3.199 SIP/2.0 Via: SIP/2.0/UDP 192.168.3.111:62475;rport;branch=z9hG4bK1674952390 From: <sip:34010000004000000001@3401000000>;tag=2725342731 To: <sip:34010000001310000223@3401000000> Call-ID: 995769000 CSeq: 20 INVITE Contact: <sip:34010000004000000001@192.168.3.111:62475> Content-Type: APPLICATION/SDP Max-Forwards: 70 User-Agent: eXosip/4.1.0 Subject: 34010000001310000223:021788,34010000004000000001:3 Content-Length: 182 v=0 o=34010000004000000001 0 0 IN IP4 192.168.3.111 s=Play c=IN IP4 192.168.3.111 t=0 0 m=video 30168 RTP/AVP 96 126 a=recvonly a=rtpmap:96 PS/90000 a=rtpmap:126 H264/90000
111请求流后,199的应答
SIP/2.0 100 Trying Via: SIP/2.0/UDP 192.168.3.111:62475;rport=62475;branch=z9hG4bK1674952390 From: <sip:34010000004000000001@3401000000>;tag=2725342731 To: <sip:34010000001310000223@3401000000> Call-ID: 995769000 CSeq: 20 INVITE User-Agent: SipSvr 1.0 Content-Length: 0
199应答请求流ok
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.3.111:62475;rport=62475;branch=z9hG4bK1674952390 From: <sip:34010000004000000001@3401000000>;tag=2725342731 To: <sip:34010000001310000223@3401000000>;tag=2651853671 Call-ID: 995769000 CSeq: 20 INVITE Contact: <sip:34010000001310000223@192.168.3.199:5060> Content-Type: Application/sdp User-Agent: SipSvr 1.0 Content-Length: 178 v=0 o=1234567890123456 0 0 IN IP4 192.168.3.199 s=Play c=IN IP4 192.168.3.199 t=0 0 m=video 39224 RTP/AVP 96 126 a=recvonly a=rtpmap:96 PS/90000 a=rtpmap:126 H264/90000
111 应答
ACK sip:34010000001310000223@192.168.3.199:5060 SIP/2.0 Via: SIP/2.0/UDP 192.168.3.111:62475;rport;branch=z9hG4bK974740072 From: <sip:34010000004000000001@3401000000>;tag=2725342731 To: <sip:34010000001310000223@3401000000>;tag=2651853671 Call-ID: 995769000 CSeq: 20 ACK Contact: <sip:34010000004000000001@192.168.3.111:62475> Max-Forwards: 70 User-Agent: eXosip/4.1.0 Content-Length: 0
message 请求
MESSAGE sip:34010000002000030199@192.168.3.199 SIP/2.0 Via: SIP/2.0/UDP 192.168.3.111:62475;rport;branch=z9hG4bK1941425718 From: <sip:34010000004000000001@3401000000>;tag=807065409 To: <sip:34010000002000030199@192.168.3.199> Call-ID: 3749161452 CSeq: 20 MESSAGE Content-Type: Application/MANSCDP+xml Max-Forwards: 70 User-Agent: eXosip/4.1.0 Content-Length: 169 <?xml version="1.0" encoding="GB2312" ?> <Notify> <CmdType>Keepalive</CmdType> <SN>4</SN> <DeviceID>34010000004000000001</DeviceID> <Status>OK</Status> </Notify>
message 应答
SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.3.111:62475;rport=62475;branch=z9hG4bK1941425718 From: <sip:34010000004000000001@3401000000>;tag=807065409 To: <sip:34010000002000030199@192.168.3.199>;tag=3099450161 Call-ID: 3749161452 CSeq: 20 MESSAGE User-Agent: SipSvr 1.0 Content-Length: 0