海康摄像头以GB28181国标协议接入国标流媒体服务器流断码问题的解决办法
随着安防行业的规范化,GB28181协议被作为中国安防行业标准应用在各个领域,尤其在交警、公安等政府相关工程应用甚是广泛。
但是由于GB28181协议的兴起在最近几年,导致很多大型厂家各自有各自的私自标准,从而导致各个平台之间对接会出现很多的问题,需要程序员自己来解决。
以海康摄像头为例,海康摄像头以28181协议接入(海康摄像头设备级的接入,非系统级别接入),分为两步:
1.通过sip invite将海康的ps流拉出来,由于是设备级的接入,所以直接对摄像头进行invite发起点播(IP直点);
2.对拉过来的ps流进行解码。
在按部就班的配置下,依然出现了流会断码的问题。在海康摄像头的web配置中会有sip服务器地址的配置,填入主叫方的IP地址和sip端口,摄像头会向主叫方注册,注意这个是只需要回复200 OK即可,在点播建立后摄像头会发送28181协议中的心跳消息(是个sip message),注意也只需回复200 OK即可。必须让海康摄像头注册上来,并且必须响应它发送的心跳消息,否则心跳消息超时后摄像头会断开会话。
经过总结,sip invite构造时需要注意几个字段,如下invite 消息标红的字段:
to 头域需要携带海康摄像头的通道ID
必须携带Subject头域,值为 摄像头通道ID:通道号,通道ID(主叫的sip id):通道号
点播时,sdp中的s行必须填Play
sdp的a行描述的为PS/90000
如果要通过invite直呼摄像头,必须在海康摄像头28181的配置界面,配入白名单,填上主叫方的IP地址,否则invite将无应答。
扩展
国标流媒体服务器目前已经非常完善地解决了国标GB28181设备的接入和视频流的输出,包括RTSP输出、RTMP输出、HTTP-FLV输出、HLS输出、国标级联输出、录像输出等,下一步将计划对国标35114国密协议进行支持。