wvp-gb28181-pro和ZLMediakit开发入门笔记——对象的启动顺序及设备注册(一)

2023年6月下载的wvp及ZLMediakit主干版本。

启动顺序

1、VManageBootstrap文件中的main
2、优先加载的bean
conf/VersionConfig.java

@Order(value=0)
public class VersionConfig

conf/UserSetting.java
加载配置文件application-dev.yml中的user-settings:域,由于一般使用默认配置,所以application-dev.yml并没有这段。如果需要,从all-application.yml中拷贝过去。

@Order(value=0)
public class UserSetting

conf/SipConfig.java
加载配置文件application-dev.yml中的sip:域

@Order(value=0)
public class SipConfig

conf/MediaConfig.java
加载配置文件application-dev.yml中的media:域,部分字段使用默认配置,如果需要,从all-application.yml中拷贝过去。

@Order(value=0)
public class MediaConfig

conf/security/WebSecurityConfig.java
安全验证配置

@Order(value=1)
public class WebSecurityConfig

conf/ThreadPoolTaskConfig.java
创建线程池,返回bean容器中。比如在DeviceInfoResponseMessageHandler.java54行,就使用线程池执行解析查询设备信息返回的xml内容。

@Order(value=1)
public class ThreadPoolTaskConfig

conf/SpringDocConfig.java
在线文档,非主要内容

@Order(value=1)
public class SpringDocConfig

conf/ProxyServletConfig.java
暂时没发现有什么作用

@Order(value=1)
public class ProxyServletConfig

conf/MybatisConfig.java
链接mysql数据库

@Order(value=1)
public class MybatisConfig

conf/RedisMsgListenConfig.java
配置redis事件的回调

@Order(value=1)
public class RedisMsgListenConfig

3、gb28181/SipLayer.java
监听5060端口,跟摄像机通信、级联平台通信。wvp使用开源组件jain-sip.jar进行sip通信。在run方法里,关联了SIPProcessorObserver观察者对象。当有请求、应答或超时事件发生时,会在gb28181/transmit/SIPProcessorObserver.java的public void processRequest(RequestEvent requestEvent)中处理。

@Order(value=10)
public class SipLayer implements CommandLineRunner {
public void run(String... args)
}

4、media/ZLMRunner.java
链接 ZLMediakit服务

@Order(value=12)
public class ZLMRunner implements CommandLineRunner {
public void run(String... args)
}

5、conf/SipPlatformRunner.java
似乎是关于国标平台级联的处理。待分析

@Order(value=13)
public class SipPlatformRunner implements CommandLineRunner {
public void run(String... args)
}

6、gb28181/task/SipRunner.java
处理摄像头在线/离线;查找国标推流

@Order(value=14)
public class SipRunner implements CommandLineRunner {
public void run(String... args)
}

注册过程

启动后,gb28181/SipLayer.java监听5060端口,等待摄像机发起注册请求。根据28181的注册流程,
wvp-gb28181-pro和ZLMediakit开发入门笔记——对象的启动顺序及设备注册(一)_第1张图片
对应到wvp-gb28181中的代码是\gb28181\transmit\event\request\impl\RegisterRequestProcessor.java的public void process(RequestEvent evt) {},注册的4步都在此方法中处理。源码片段如下
wvp-gb28181-pro和ZLMediakit开发入门笔记——对象的启动顺序及设备注册(一)_第2张图片

如果注册成功,调用\service\impl\DeviceServiceImpl.java的online方法将device信息写到redis和mysql。如果是第一次注册的设备,在\service\impl\DeviceServiceImpl.java\online方法里调用命令查询设备信息和通道信息, commander.deviceInfoQuery(device);即\gb28181\transmit\cmd\impl\SIPCommander.java\deviceInfoQuery方法。

(本节完)

你可能感兴趣的:(流媒体,笔记)