Commit 4cdeeb4a3656a35c4b91cbcdd99d8b7c679f5e84

Authored by 648540858
1 parent 0898c63c

修复一些日志设置

... ... @@ -169,8 +169,8 @@
169 169 </dependencies>
170 170  
171 171 <build>
  172 + <finalName>wvp-2.5.8</finalName>
172 173 <plugins>
173   -
174 174 <plugin>
175 175 <groupId>org.springframework.boot</groupId>
176 176 <artifactId>spring-boot-maven-plugin</artifactId>
... ... @@ -184,18 +184,6 @@
184 184 <configuration>
185 185 <source>1.8</source>
186 186 <target>1.8</target>
187   - <!--
188   - <webResources>
189   - <resource>
190   - <directory>${project.basedir}/libs</directory>
191   - <targetPath>WEB-INF/lib</targetPath>
192   - <filtering>true</filtering>
193   - <includes>
194   - <include>**/*.jar</include>
195   - </includes>
196   - </resource>
197   - </webResources>
198   - -->
199 187 </configuration>
200 188 </plugin>
201 189  
... ...
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
... ... @@ -16,6 +16,8 @@ import javax.sip.header.ViaHeader;
16 16 import javax.sip.message.Request;
17 17 import javax.sip.message.Response;
18 18  
  19 +import org.slf4j.Logger;
  20 +import org.slf4j.LoggerFactory;
19 21 import org.springframework.util.StringUtils;
20 22  
21 23 import com.genersoft.iot.vmp.common.VideoManagerConstants;
... ... @@ -39,6 +41,8 @@ import gov.nist.javax.sip.header.Expires;
39 41 */
40 42 public class RegisterRequestProcessor extends SIPRequestAbstractProcessor {
41 43  
  44 + private Logger logger = LoggerFactory.getLogger(RegisterRequestProcessor.class);
  45 +
42 46 private SipConfig sipConfig;
43 47  
44 48 private RegisterLogicHandler handler;
... ... @@ -46,17 +50,15 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor {
46 50 private IVideoManagerStorager storager;
47 51  
48 52 private EventPublisher publisher;
49   -
50   - /***
  53 +
  54 + /**
51 55 * 收到注册请求 处理
52   - *
53   - * @param request
54   - * 请求消息
55   - */
  56 + * @param evt
  57 + */
56 58 @Override
57 59 public void process(RequestEvent evt) {
58 60 try {
59   - System.out.println("收到注册请求,开始处理");
  61 + logger.info("收到注册请求,开始处理");
60 62 Request request = evt.getRequest();
61 63  
62 64 Response response = null;
... ... @@ -75,9 +77,9 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor {
75 77 if (authorhead == null || !passwordCorrect) {
76 78  
77 79 if (authorhead == null) {
78   - System.out.println("未携带授权头 回复401");
  80 + logger.info("未携带授权头 回复401");
79 81 } else if (!passwordCorrect) {
80   - System.out.println("密码错误 回复401");
  82 + logger.info("密码错误 回复401");
81 83 }
82 84 response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
83 85 new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getSipDomain());
... ... @@ -138,12 +140,12 @@ public class RegisterRequestProcessor extends SIPRequestAbstractProcessor {
138 140 // 保存到redis
139 141 // 下发catelog查询目录
140 142 if (registerFlag == 1 && device != null) {
141   - System.out.println("注册成功! deviceId:" + device.getDeviceId());
  143 + logger.info("注册成功! deviceId:" + device.getDeviceId());
142 144 storager.updateDevice(device);
143 145 publisher.onlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_ONLINE_REGISTER);
144 146 handler.onRegister(device);
145 147 } else if (registerFlag == 2) {
146   - System.out.println("注销成功! deviceId:" + device.getDeviceId());
  148 + logger.info("注销成功! deviceId:" + device.getDeviceId());
147 149 publisher.outlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_OUTLINE_UNREGISTER);
148 150 }
149 151 } catch (SipException | InvalidArgumentException | NoSuchAlgorithmException | ParseException e) {
... ...
src/main/java/com/genersoft/iot/vmp/web/ApiStreamController.java
1 1 package com.genersoft.iot.vmp.web;
2 2  
3 3 import com.alibaba.fastjson.JSON;
  4 +import com.alibaba.fastjson.JSONArray;
4 5 import com.alibaba.fastjson.JSONObject;
5 6 import com.genersoft.iot.vmp.common.StreamInfo;
6 7 import com.genersoft.iot.vmp.gb28181.bean.Device;
7 8 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
8 9 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
  10 +import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
9 11 import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
10 12 import com.genersoft.iot.vmp.vmanager.play.PlayController;
11 13 import org.slf4j.Logger;
12 14 import org.slf4j.LoggerFactory;
13 15 import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.beans.factory.annotation.Value;
14 17 import org.springframework.http.HttpStatus;
15 18 import org.springframework.http.ResponseEntity;
16 19 import org.springframework.web.bind.annotation.*;
... ... @@ -31,6 +34,13 @@ public class ApiStreamController {
31 34 @Autowired
32 35 private IVideoManagerStorager storager;
33 36  
  37 + @Value("${media.closeWaitRTPInfo}")
  38 + private boolean closeWaitRTPInfo;
  39 +
  40 +
  41 + @Autowired
  42 + private ZLMRESTfulUtils zlmresTfulUtils;
  43 +
34 44 /**
35 45 * 实时直播 - 开始直播
36 46 * @param serial 设备编号
... ... @@ -56,28 +66,112 @@ public class ApiStreamController {
56 66 @RequestParam(required = false)String timeout
57 67  
58 68 ){
59   -
  69 + int getEncoding = closeWaitRTPInfo? 1: 0;
60 70 Device device = storager.queryVideoDevice(serial);
  71 +
61 72 if (device == null ) {
62 73 JSONObject result = new JSONObject();
63 74 result.put("error","device[ " + serial + " ]未找到");
64 75 return result;
  76 + }else if (device.getOnline() == 0) {
  77 + JSONObject result = new JSONObject();
  78 + result.put("error","device[ " + code + " ]offline");
  79 + return result;
65 80 }
  81 +
66 82 DeviceChannel deviceChannel = storager.queryChannel(serial, code);
67 83 if (deviceChannel == null) {
68 84 JSONObject result = new JSONObject();
69 85 result.put("error","channel[ " + code + " ]未找到");
70 86 return result;
  87 + }else if (deviceChannel.getStatus() == 0) {
  88 + JSONObject result = new JSONObject();
  89 + result.put("error","channel[ " + code + " ]offline");
  90 + return result;
71 91 }
  92 +
72 93 // 查询是否已经在播放
73 94 StreamInfo streamInfo = storager.queryPlayByDevice(device.getDeviceId(), code);
74   - if (streamInfo == null) streamInfo = cmder.playStreamCmd(device, code);
  95 + if (streamInfo == null) {
  96 + logger.debug("streamInfo 等于null, 重新点播");
  97 + streamInfo = cmder.playStreamCmd(device, code);
  98 + }else {
  99 + logger.debug("streamInfo 不等于null, 向流媒体查询是否正在推流");
  100 + String streamId = String.format("%08x", Integer.parseInt(streamInfo.getSsrc())).toUpperCase();
  101 + JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(streamId);
  102 + if (rtpInfo.getBoolean("exist")) {
  103 + logger.debug("向流媒体查询正在推流, 直接返回: " + streamInfo.getRtsp());
  104 + JSONObject result = new JSONObject();
  105 + result.put("StreamID", streamInfo.getSsrc());
  106 + result.put("DeviceID", device.getDeviceId());
  107 + result.put("ChannelID", code);
  108 + result.put("ChannelName", deviceChannel.getName());
  109 + result.put("ChannelCustomName ", "");
  110 + result.put("FLV ", streamInfo.getFlv());
  111 + result.put("WS_FLV ", streamInfo.getWs_flv());
  112 + result.put("RTMP", streamInfo.getRtmp());
  113 + result.put("HLS", streamInfo.getHls());
  114 + result.put("RTSP", streamInfo.getRtsp());
  115 + result.put("CDN", "");
  116 + result.put("SnapURL", "");
  117 + result.put("Transport", device.getTransport());
  118 + result.put("StartAt", "");
  119 + result.put("Duration", "");
  120 + result.put("SourceVideoCodecName", "");
  121 + result.put("SourceVideoWidth", "");
  122 + result.put("SourceVideoHeight", "");
  123 + result.put("SourceVideoFrameRate", "");
  124 + result.put("SourceAudioCodecName", "");
  125 + result.put("SourceAudioSampleRate", "");
  126 + result.put("AudioEnable", "");
  127 + result.put("Ondemand", "");
  128 + result.put("InBytes", "");
  129 + result.put("InBitRate", "");
  130 + result.put("OutBytes", "");
  131 + result.put("NumOutputs", "");
  132 + result.put("CascadeSize", "");
  133 + result.put("RelaySize", "");
  134 + result.put("ChannelPTZType", 0);
  135 + return result;
  136 + } else {
  137 + logger.debug("向流媒体查询没有推流, 重新点播");
  138 + storager.stopPlay(streamInfo);
  139 + streamInfo = cmder.playStreamCmd(device, code);
  140 + }
  141 + }
75 142  
76 143 if (logger.isDebugEnabled()) {
77 144 logger.debug(String.format("设备预览 API调用,deviceId:%s ,channelId:%s",serial, code));
78 145 logger.debug("设备预览 API调用,ssrc:"+streamInfo.getSsrc()+",ZLMedia streamId:"+Integer.toHexString(Integer.parseInt(streamInfo.getSsrc())));
79 146 }
  147 + boolean lockFlag = true;
  148 + long startTime = System.currentTimeMillis();
  149 + while (lockFlag) {
  150 + try {
  151 + if (System.currentTimeMillis() - startTime > 10 * 1000) {
  152 + storager.stopPlay(streamInfo);
  153 + logger.info("播放等待超时");
  154 + JSONObject result = new JSONObject();
  155 + result.put("error","timeout");
  156 + return result;
  157 + } else {
80 158  
  159 + StreamInfo streamInfoNow = storager.queryPlayByDevice(serial, code);
  160 + logger.debug("正在向流媒体查询");
  161 + if (streamInfoNow != null && streamInfoNow.getFlv() != null) {
  162 + streamInfo = streamInfoNow;
  163 + logger.debug("向流媒体查询到: " + streamInfoNow.getRtsp());
  164 + lockFlag = false;
  165 + continue;
  166 + } else {
  167 + Thread.sleep(2000);
  168 + continue;
  169 + }
  170 + }
  171 + } catch (InterruptedException e) {
  172 + e.printStackTrace();
  173 + }
  174 + }
81 175 if(streamInfo!=null) {
82 176 JSONObject result = new JSONObject();
83 177 result.put("StreamID", streamInfo.getSsrc());
... ...
src/main/resources/application.yml
... ... @@ -49,5 +49,13 @@ media: #zlm服务器的ip与http端口, 重点: 这是http端口
49 49 rtp: # 启用udp多端口模式
50 50 enable: true
51 51 udpPortRange: 30000,30500 # 端口范围
52   -
53   -
  52 +logging:
  53 + file:
  54 + name: logs/wvp.log
  55 + max-history: 30
  56 + max-size: 10MB
  57 + total-size-cap:300MB
  58 + level:
  59 + com:
  60 + genersoft:
  61 + iot: debug
54 62 \ No newline at end of file
... ...