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中的代码是\gb28181\transmit\event\request\impl\RegisterRequestProcessor.java的public void process(RequestEvent evt) {},注册的4步都在此方法中处理。源码片段如下
如果注册成功,调用\service\impl\DeviceServiceImpl.java的online方法将device信息写到redis和mysql。如果是第一次注册的设备,在\service\impl\DeviceServiceImpl.java\online方法里调用命令查询设备信息和通道信息, commander.deviceInfoQuery(device);即\gb28181\transmit\cmd\impl\SIPCommander.java\deviceInfoQuery方法。
(本节完)