本计划给我们现有的平台使用Zlmediakit支持GB28181协议,但因为没有用过GB28181,所以捣鼓了一天Zlmediakit也没明白怎么能把海康的流推上来。试用了几个GB28181测试工具,发现都不好使。最后试用了华为好望云,才大致搞清楚了GB28181的逻辑。
GB28181需要流媒体服务器和SIP信令服务器的结合才可以使用,但ZLMediakit仅支持流媒体服务,不支持SIP信令。所以仅使用Zlmediakit是无法推流的。ZLMediakit官网与wvp-GB28181-pro项目合作,由wvp-GB28181-pro项目实现了SIP信令部分。
链接: https://github.com/648540858/wvp-GB28181-pro https://github.com/ZLMediaKit/ZLMediaKit/
经过了两天的测试,终于完成了zlm+wvp的验证,实现了gb28181的推流及网页的播放。
一、核心过程
Zlmediakit按需推流流程
wvp-pro点播流程
以下为WVP-PRO点播流程。点播成功前的任何一个环节出现问题都可能出现点播超时,这也是排查点播超时的依据。
注册流程描述如下:
- 用户从网页或调用接口发起点播请求;
- WVP-PRO向摄像机发送Invite消息,消息头域中携带 Subject字段,表明点播的视频源ID、发送方媒体流序列号、ZLMediaKit接收流使用的IP、端口号、 接收端媒体流序列号等参数,SDP消息体中 s字段为“Play”代表实时点播,y字段描述SSRC值,f字段描述媒体参数。
- 摄像机向WVP-PRO回复200OK,消息体中描述了媒体流发送者发送媒体流的IP、端口、媒体格式、SSRC字段等内容。
- WVP-PRO向设备回复Ack, 会话建立成功。
- 设备向ZLMediaKit发送实时流。
- ZLMediaKit向WVP-PRO发送流改变事件。
- WVP-PRO向WEB用户回复播放地址。
- ZLMediaKit向WVP发送流无人观看事件。
- WVP-PRO向设备回复Bye, 结束会话。
- 设备回复200OK,会话结束成功。
相机注册流程
WVP-PRO目前仅支持国标中描述的基本注册流程,也是最常用的,
基本注册即采用IETFRFC3261规定的基于数字摘要的挑战应答式安全技术进行注册.
注册流程描述如下:
- 摄像机向WVP-PRO服务器发送 Register请求;
- WVP-PRO向摄像机发送响应401,并在响应的消息头 WWW_Authenticate字段中给出适合摄像机的认证体制和参数;
- 摄像机重新向WVP-PRO发送 Register请求,在请求的 Authorization字段给出信任书, 包含认证信息;
- WVP-PRO对请求进行验证,如果检查出 摄像机身份合法,向摄像机发送成功响应 200OK,如果身份不合法则发送拒绝服务应答。
流程总结
二、验证过程
zlm最新版使用docker安装在ubuntu22服务器中,ip为192.168.6.277。wvp使用代码编译后,在我本地windows11运行,本地的ip是192.168.99.1202。