随着视频技术的不断进步,视频监控、直播、执法记录仪等多种视频资源的应用场景愈发广泛且多样化。这些视频资源不仅在数量上快速增长,更在质量、格式及编码标准等方面展现出极高的多样性。因此,为了实现对这些资源的有效整合和统一管理输出,LiteGBS国标GB28181网页直播平台对于视频综合接入能力的需求愈发迫切。

本文记录使用IP直连的方式从海康摄像头获取PS流的过程及注意事项。本例模拟了一个SIP Server(UAS),设置摄像头注册到上面,之后模拟了一个SIP Client(UAC)向摄像头的IP地址发送获取视频的请求,之后监听UDP的端口来接收摄像头发送过来的PS流。

国标GB28181软件LiteGBS国标GB28181-2022平台如何从海康摄像头获取PS流_IP

1、主要流程

  • 编写模拟的SIP Server,功能:提供注册和心跳的应答。
  • 开启海康IPC的GB28181支持,填写SIP服务并设置IP白名单。
  • 启动一个程序来监听端口,用于接收IPC返回的数据。
  • 编写SIP Client,向IPC发起INVITE请求,并对IPC返回的SIP消息进行应答。

国标GB28181软件LiteGBS国标GB28181-2022平台如何从海康摄像头获取PS流_音视频_02

2、模拟SIP Server

此处基于Pjsua2实现。

按照GB28181的流程,SIP Server需要对设备进行验证,然后才能允许其注册,不过这里可以取巧,就是不进行验证,IPC注册就返回注册成功,心跳也是。

static pj_bool_t default_mod_on_rx_request(pjsip_rx_data *rdata)
{
  pjsip_tx_data *tdata;
  // 判断如果发送过来的数据为注册类型进行相应处理
  if (pjsip_method_cmp(&rdata->msg_info.msg->line.req.method, &pjsip_register_method) == 0)
  {
    // 解析认证请求
    // aregistrar(rdata);
    PJ_LOG(3, (THIS_FILE, "REGISTRATAR\n\n\n"));
    pjsip_endpt_create_response(pjsua_get_pjsip_endpt(), rdata, 200, NULL, &tdata);
    pjsip_endpt_send_response2(pjsua_get_pjsip_endpt(), rdata, tdata, NULL, NULL);
    return PJ_TRUE;
  }
  // 其它情况如心跳,直接返回 200 OK
  pjsip_endpt_create_response(pjsua_get_pjsip_endpt(), rdata, 200, NULL, &tdata);
  pjsip_endpt_send_response2(pjsua_get_pjsip_endpt(), rdata, tdata, NULL, NULL);
  return PJ_TRUE;
}

3、配置海康摄像头

接下来进入海康摄像头的配置页面:

国标GB28181软件LiteGBS国标GB28181-2022平台如何从海康摄像头获取PS流_IP_03

启用 GB28181 的平台接入方式,SIP服务器ID填写SIP服务的用户Uri,地址填写运行刚才的模拟SIP Server的IP地址。

过一会儿后,注册状态会变为“在线”。

如果在终端看日志,可以看到如下的注册及心跳包内容。

注册及回复

国标GB28181软件LiteGBS国标GB28181-2022平台如何从海康摄像头获取PS流_大数据_04

心跳及回复

国标GB28181软件LiteGBS国标GB28181-2022平台如何从海康摄像头获取PS流_音视频_05

此时,海康摄像头已经接入到我们模拟的GB28181平台了。

4、启动UDP监听端口

此时在客户端上启动一个监听UDP端口的程序,无论用什么语言编写,监听本地的IP及端口(6000),然后把收到的内容打印即可。

备注:6000端口是即将发送请求时里面指定的,意思是说我用6000/udp端口号来接收ps流数据。

总之LiteGBS国标GB28181公网平台视频能力丰富,部署灵活,既能作为业务平台使用,也能作为安防监控视频能力层被业务管理平台调用。LiteGBS国标GB28181-2022平台可提供流媒体接入、处理、转发等服务,支持内网、公网的安防视频监控设备通过国标GB28181协议进行视频监控直播。