随着视频技术的不断进步,视频监控、直播、执法记录仪等多种视频资源的应用场景愈发广泛且多样化。这些视频资源不仅在数量上快速增长,更在质量、格式及编码标准等方面展现出极高的多样性。因此,为了实现对这些资源的有效整合和统一管理输出,LiteGBS国标GB28181网页直播平台对于视频综合接入能力的需求愈发迫切。
本文记录使用IP直连的方式从海康摄像头获取PS流的过程及注意事项。本例模拟了一个SIP Server(UAS),设置摄像头注册到上面,之后模拟了一个SIP Client(UAC)向摄像头的IP地址发送获取视频的请求,之后监听UDP的端口来接收摄像头发送过来的PS流。
1、主要流程
-
编写模拟的SIP Server,功能:提供注册和心跳的应答。
-
开启海康IPC的GB28181支持,填写SIP服务并设置IP白名单。
-
启动一个程序来监听端口,用于接收IPC返回的数据。
-
编写SIP Client,向IPC发起INVITE请求,并对IPC返回的SIP消息进行应答。
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 的平台接入方式,SIP服务器ID填写SIP服务的用户Uri,地址填写运行刚才的模拟SIP Server的IP地址。
过一会儿后,注册状态会变为“在线”。
如果在终端看日志,可以看到如下的注册及心跳包内容。
注册及回复
心跳及回复
此时,海康摄像头已经接入到我们模拟的GB28181平台了。
4、启动UDP监听端口
此时在客户端上启动一个监听UDP端口的程序,无论用什么语言编写,监听本地的IP及端口(6000),然后把收到的内容打印即可。
备注:6000端口是即将发送请求时里面指定的,意思是说我用6000/udp端口号来接收ps流数据。
总之LiteGBS国标GB28181公网平台视频能力丰富,部署灵活,既能作为业务平台使用,也能作为安防监控视频能力层被业务管理平台调用。LiteGBS国标GB28181-2022平台可提供流媒体接入、处理、转发等服务,支持内网、公网的安防视频监控设备通过国标GB28181协议进行视频监控直播。
标签:PS,SIP,GB28181,pjsip,国标,摄像头,rdata,endpt From: https://www.cnblogs.com/litemedia/p/18552530