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

先行知识
1,了解 SIP 基本概念
2,会使用通用编程语言收发UDP包
3,通读国标《GB/T 28181-2016》文档
一些概念
1,SIP 会话初始协议栈规定了一套建立通信的流程,国标 GB28181 基于 SIP 来构建并添加规范。
2,通过 GB28181 标准,就可以调用同样支持 GB28181 标准的监控设备(IP Camera,NVR等)
3,海康网络摄像头需要连接到SIP服务器,并且需要保持心跳,否则推送的PS流会断。
我的环境
IP Camera(IPC):192.168.42.128
服务器(UAS):192.168.3.189
我的电脑(UAC):192.168.103.232

主要流程
1,编写模拟的 SIP Server,功能:提供注册和心跳的应答。
2,开启海康IPC的GB28181支持,填写SIP服务并设置IP白名单。
3,启动一个程序来监听端口,用于接收IPC返回的数据。
4,编写 SIP Client,向IPC发起 INVITE 请求,并对IPC返回的SIP消息进行应答。
模拟 SIP Server
此处基于 Pjsua2 实现
需要先完成 Pjsip/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)
{
// 解析认证请求
// are

本文详细描述了如何通过模拟SIPServer和SIPClient,使用IP直连的方式从海康摄像头获取PS流,包括设置SIP服务器、配置摄像头、心跳保持和接收PS流的步骤,并强调了Wireshark在调试过程中的重要性。
最低0.47元/天 解锁文章
4094

被折叠的 条评论
为什么被折叠?



