Commit 92022f8a8b7bccc865c47bd8cfafaffb91c2799c

Authored by 648540858
Committed by GitHub
2 parents b19a885f a463b676

Merge pull request #640 from duzeng/wvp-28181-2.0

feat: 点播开始后的截图任务,判断启用https后使用https_fmp4流地址
.gitignore
@@ -27,3 +27,4 @@ hs_err_pid* @@ -27,3 +27,4 @@ hs_err_pid*
27 /target/ 27 /target/
28 28
29 /src/main/resources/static/ 29 /src/main/resources/static/
  30 +certificates
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -21,6 +21,7 @@ import org.slf4j.Logger; @@ -21,6 +21,7 @@ import org.slf4j.Logger;
21 import org.slf4j.LoggerFactory; 21 import org.slf4j.LoggerFactory;
22 import org.springframework.beans.factory.annotation.Autowired; 22 import org.springframework.beans.factory.annotation.Autowired;
23 import org.springframework.beans.factory.annotation.Qualifier; 23 import org.springframework.beans.factory.annotation.Qualifier;
  24 +import org.springframework.beans.factory.annotation.Value;
24 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 25 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
25 import org.springframework.stereotype.Service; 26 import org.springframework.stereotype.Service;
26 import org.springframework.web.context.request.async.DeferredResult; 27 import org.springframework.web.context.request.async.DeferredResult;
@@ -112,7 +113,8 @@ public class PlayServiceImpl implements IPlayService { @@ -112,7 +113,8 @@ public class PlayServiceImpl implements IPlayService {
112 @Autowired 113 @Autowired
113 private ThreadPoolTaskExecutor taskExecutor; 114 private ThreadPoolTaskExecutor taskExecutor;
114 115
115 - 116 + @Value("${server.ssl.enabled}")
  117 + private boolean sslEnabled;
116 118
117 @Override 119 @Override
118 public PlayResult play(MediaServerItem mediaServerItem, String deviceId, String channelId, 120 public PlayResult play(MediaServerItem mediaServerItem, String deviceId, String channelId,
@@ -137,17 +139,18 @@ public class PlayServiceImpl implements IPlayService { @@ -137,17 +139,18 @@ public class PlayServiceImpl implements IPlayService {
137 StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId); 139 StreamInfo streamInfo = redisCatchStorage.queryPlayByDevice(deviceId, channelId);
138 playResult.setDevice(device); 140 playResult.setDevice(device);
139 141
140 - result.onCompletion(()->{ 142 + result.onCompletion(() -> {
141 // 点播结束时调用截图接口 143 // 点播结束时调用截图接口
142 - taskExecutor.execute(()->{ 144 + taskExecutor.execute(() -> {
143 // TODO 应该在上流时调用更好,结束也可能是错误结束 145 // TODO 应该在上流时调用更好,结束也可能是错误结束
144 - String path = "snap";  
145 - String fileName = deviceId + "_" + channelId + ".jpg";  
146 - WVPResult wvpResult = (WVPResult)result.getResult(); 146 + String path = "snap";
  147 + String fileName = deviceId + "_" + channelId + ".jpg";
  148 + WVPResult wvpResult = (WVPResult) result.getResult();
147 if (Objects.requireNonNull(wvpResult).getCode() == 0) { 149 if (Objects.requireNonNull(wvpResult).getCode() == 0) {
148 - StreamInfo streamInfoForSuccess = (StreamInfo)wvpResult.getData(); 150 + StreamInfo streamInfoForSuccess = (StreamInfo) wvpResult.getData();
149 MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId()); 151 MediaServerItem mediaInfo = mediaServerService.getOne(streamInfoForSuccess.getMediaServerId());
150 - String streamUrl = streamInfoForSuccess.getFmp4(); 152 + String streamUrl = sslEnabled ? streamInfoForSuccess.getHttps_fmp4() : streamInfoForSuccess.getFmp4();
  153 +
151 // 请求截图 154 // 请求截图
152 logger.info("[请求截图]: " + fileName); 155 logger.info("[请求截图]: " + fileName);
153 zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName); 156 zlmresTfulUtils.getSnap(mediaInfo, streamUrl, 15, 1, path, fileName);
@@ -169,7 +172,7 @@ public class PlayServiceImpl implements IPlayService { @@ -169,7 +172,7 @@ public class PlayServiceImpl implements IPlayService {
169 MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId); 172 MediaServerItem mediaInfo = mediaServerService.getOne(mediaServerId);
170 173
171 JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaInfo, streamId); 174 JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaInfo, streamId);
172 - if(rtpInfo.getInteger("code") == 0){ 175 + if (rtpInfo.getInteger("code") == 0) {
173 if (rtpInfo.getBoolean("exist")) { 176 if (rtpInfo.getBoolean("exist")) {
174 int localPort = rtpInfo.getInteger("local_port"); 177 int localPort = rtpInfo.getInteger("local_port");
175 if (localPort == 0) { 178 if (localPort == 0) {
@@ -182,7 +185,7 @@ public class PlayServiceImpl implements IPlayService { @@ -182,7 +185,7 @@ public class PlayServiceImpl implements IPlayService {
182 185
183 resultHolder.invokeAllResult(msg); 186 resultHolder.invokeAllResult(msg);
184 return playResult; 187 return playResult;
185 - }else { 188 + } else {
186 WVPResult wvpResult = new WVPResult(); 189 WVPResult wvpResult = new WVPResult();
187 wvpResult.setCode(ErrorCode.SUCCESS.getCode()); 190 wvpResult.setCode(ErrorCode.SUCCESS.getCode());
188 wvpResult.setMsg(ErrorCode.SUCCESS.getMsg()); 191 wvpResult.setMsg(ErrorCode.SUCCESS.getMsg());
@@ -195,12 +198,12 @@ public class PlayServiceImpl implements IPlayService { @@ -195,12 +198,12 @@ public class PlayServiceImpl implements IPlayService {
195 } 198 }
196 } 199 }
197 200
198 - }else { 201 + } else {
199 redisCatchStorage.stopPlay(streamInfo); 202 redisCatchStorage.stopPlay(streamInfo);
200 storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); 203 storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
201 streamInfo = null; 204 streamInfo = null;
202 } 205 }
203 - }else { 206 + } else {
204 //zlm连接失败 207 //zlm连接失败
205 redisCatchStorage.stopPlay(streamInfo); 208 redisCatchStorage.stopPlay(streamInfo);
206 storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId()); 209 storager.stopPlay(streamInfo.getDeviceID(), streamInfo.getChannelId());
@@ -215,7 +218,7 @@ public class PlayServiceImpl implements IPlayService { @@ -215,7 +218,7 @@ public class PlayServiceImpl implements IPlayService {
215 } 218 }
216 SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck(), false); 219 SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck(), false);
217 logger.info(JSONObject.toJSONString(ssrcInfo)); 220 logger.info(JSONObject.toJSONString(ssrcInfo));
218 - play(mediaServerItem, ssrcInfo, device, channelId, (mediaServerItemInUse, response)->{ 221 + play(mediaServerItem, ssrcInfo, device, channelId, (mediaServerItemInUse, response) -> {
219 if (hookEvent != null) { 222 if (hookEvent != null) {
220 hookEvent.response(mediaServerItem, response); 223 hookEvent.response(mediaServerItem, response);
221 } 224 }
@@ -229,13 +232,13 @@ public class PlayServiceImpl implements IPlayService { @@ -229,13 +232,13 @@ public class PlayServiceImpl implements IPlayService {
229 if (errorEvent != null) { 232 if (errorEvent != null) {
230 errorEvent.response(event); 233 errorEvent.response(event);
231 } 234 }
232 - }, (code, msgStr)->{ 235 + }, (code, msgStr) -> {
233 // invite点播超时 236 // invite点播超时
234 WVPResult wvpResult = new WVPResult(); 237 WVPResult wvpResult = new WVPResult();
235 wvpResult.setCode(ErrorCode.ERROR100.getCode()); 238 wvpResult.setCode(ErrorCode.ERROR100.getCode());
236 if (code == 0) { 239 if (code == 0) {
237 wvpResult.setMsg("点播超时,请稍候重试"); 240 wvpResult.setMsg("点播超时,请稍候重试");
238 - }else if (code == 1) { 241 + } else if (code == 1) {
239 wvpResult.setMsg("收流超时,请稍候重试"); 242 wvpResult.setMsg("收流超时,请稍候重试");
240 } 243 }
241 msg.setData(wvpResult); 244 msg.setData(wvpResult);
@@ -247,7 +250,6 @@ public class PlayServiceImpl implements IPlayService { @@ -247,7 +250,6 @@ public class PlayServiceImpl implements IPlayService {
247 } 250 }
248 251
249 252
250 -  
251 @Override 253 @Override
252 public void play(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId, 254 public void play(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, Device device, String channelId,
253 ZlmHttpHookSubscribe.Event hookEvent, SipSubscribe.Event errorEvent, 255 ZlmHttpHookSubscribe.Event hookEvent, SipSubscribe.Event errorEvent,
@@ -260,12 +262,12 @@ public class PlayServiceImpl implements IPlayService { @@ -260,12 +262,12 @@ public class PlayServiceImpl implements IPlayService {
260 if (ssrcInfo == null) { 262 if (ssrcInfo == null) {
261 ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck(), false); 263 ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck(), false);
262 } 264 }
263 - logger.info("[点播开始] deviceId: {}, channelId: {},收流端口: {}, 收流模式:{}, SSRC: {}, SSRC校验:{}", device.getDeviceId(), channelId, ssrcInfo.getPort(), device.getStreamMode(), ssrcInfo.getSsrc(), device.isSsrcCheck() ); 265 + logger.info("[点播开始] deviceId: {}, channelId: {},收流端口: {}, 收流模式:{}, SSRC: {}, SSRC校验:{}", device.getDeviceId(), channelId, ssrcInfo.getPort(), device.getStreamMode(), ssrcInfo.getSsrc(), device.isSsrcCheck());
264 // 超时处理 266 // 超时处理
265 String timeOutTaskKey = UUID.randomUUID().toString(); 267 String timeOutTaskKey = UUID.randomUUID().toString();
266 SSRCInfo finalSsrcInfo = ssrcInfo; 268 SSRCInfo finalSsrcInfo = ssrcInfo;
267 System.out.println("设置超时任务: " + timeOutTaskKey); 269 System.out.println("设置超时任务: " + timeOutTaskKey);
268 - dynamicTask.startDelay( timeOutTaskKey,()->{ 270 + dynamicTask.startDelay(timeOutTaskKey, () -> {
269 271
270 logger.info("[点播超时] 收流超时 deviceId: {}, channelId: {},端口:{}, SSRC: {}", device.getDeviceId(), channelId, finalSsrcInfo.getPort(), finalSsrcInfo.getSsrc()); 272 logger.info("[点播超时] 收流超时 deviceId: {}, channelId: {},端口:{}, SSRC: {}", device.getDeviceId(), channelId, finalSsrcInfo.getPort(), finalSsrcInfo.getSsrc());
271 timeoutCallback.run(1, "收流超时"); 273 timeoutCallback.run(1, "收流超时");
@@ -284,7 +286,7 @@ public class PlayServiceImpl implements IPlayService { @@ -284,7 +286,7 @@ public class PlayServiceImpl implements IPlayService {
284 final String ssrc = ssrcInfo.getSsrc(); 286 final String ssrc = ssrcInfo.getSsrc();
285 final String stream = ssrcInfo.getStream(); 287 final String stream = ssrcInfo.getStream();
286 //端口获取失败的ssrcInfo 没有必要发送点播指令 288 //端口获取失败的ssrcInfo 没有必要发送点播指令
287 - if(ssrcInfo.getPort() <= 0){ 289 + if (ssrcInfo.getPort() <= 0) {
288 logger.info("[点播端口分配异常],deviceId={},channelId={},ssrcInfo={}", device.getDeviceId(), channelId, ssrcInfo); 290 logger.info("[点播端口分配异常],deviceId={},channelId={},ssrcInfo={}", device.getDeviceId(), channelId, ssrcInfo);
289 return; 291 return;
290 } 292 }
@@ -299,7 +301,7 @@ public class PlayServiceImpl implements IPlayService { @@ -299,7 +301,7 @@ public class PlayServiceImpl implements IPlayService {
299 logger.info("[点播成功] deviceId: {}, channelId: {}", device.getDeviceId(), channelId); 301 logger.info("[点播成功] deviceId: {}, channelId: {}", device.getDeviceId(), channelId);
300 302
301 }, (event) -> { 303 }, (event) -> {
302 - ResponseEvent responseEvent = (ResponseEvent)event.event; 304 + ResponseEvent responseEvent = (ResponseEvent) event.event;
303 String contentString = new String(responseEvent.getResponse().getRawContent()); 305 String contentString = new String(responseEvent.getResponse().getRawContent());
304 // 获取ssrc 306 // 获取ssrc
305 int ssrcIndex = contentString.indexOf("y="); 307 int ssrcIndex = contentString.indexOf("y=");
@@ -311,7 +313,7 @@ public class PlayServiceImpl implements IPlayService { @@ -311,7 +313,7 @@ public class PlayServiceImpl implements IPlayService {
311 if (ssrc.equals(ssrcInResponse)) { 313 if (ssrc.equals(ssrcInResponse)) {
312 return; 314 return;
313 } 315 }
314 - logger.info("[点播消息] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse ); 316 + logger.info("[点播消息] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse);
315 if (!mediaServerItem.isRtpEnable() || device.isSsrcCheck()) { 317 if (!mediaServerItem.isRtpEnable() || device.isSsrcCheck()) {
316 logger.info("[点播消息] SSRC修正 {}->{}", ssrc, ssrcInResponse); 318 logger.info("[点播消息] SSRC修正 {}->{}", ssrc, ssrcInResponse);
317 319
@@ -332,13 +334,13 @@ public class PlayServiceImpl implements IPlayService { @@ -332,13 +334,13 @@ public class PlayServiceImpl implements IPlayService {
332 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", stream, true, "rtsp", mediaServerItem.getId()); 334 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", stream, true, "rtsp", mediaServerItem.getId());
333 subscribe.removeSubscribe(hookSubscribe); 335 subscribe.removeSubscribe(hookSubscribe);
334 hookSubscribe.getContent().put("stream", String.format("%08x", Integer.parseInt(ssrcInResponse)).toUpperCase()); 336 hookSubscribe.getContent().put("stream", String.format("%08x", Integer.parseInt(ssrcInResponse)).toUpperCase());
335 - subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject response)->{  
336 - logger.info("[ZLM HOOK] ssrc修正后收到订阅消息: " + response.toJSONString());  
337 - dynamicTask.stop(timeOutTaskKey);  
338 - // hook响应  
339 - onPublishHandlerForPlay(mediaServerItemInUse, response, device.getDeviceId(), channelId, uuid);  
340 - hookEvent.response(mediaServerItemInUse, response);  
341 - }); 337 + subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject response) -> {
  338 + logger.info("[ZLM HOOK] ssrc修正后收到订阅消息: " + response.toJSONString());
  339 + dynamicTask.stop(timeOutTaskKey);
  340 + // hook响应
  341 + onPublishHandlerForPlay(mediaServerItemInUse, response, device.getDeviceId(), channelId, uuid);
  342 + hookEvent.response(mediaServerItemInUse, response);
  343 + });
342 } 344 }
343 // 关闭rtp server 345 // 关闭rtp server
344 mediaServerService.closeRTPServer(mediaServerItem, finalSsrcInfo.getStream()); 346 mediaServerService.closeRTPServer(mediaServerItem, finalSsrcInfo.getStream());
@@ -410,7 +412,7 @@ public class PlayServiceImpl implements IPlayService { @@ -410,7 +412,7 @@ public class PlayServiceImpl implements IPlayService {
410 MediaServerItem mediaServerItem; 412 MediaServerItem mediaServerItem;
411 if (mediaServerId == null) { 413 if (mediaServerId == null) {
412 mediaServerItem = mediaServerService.getMediaServerForMinimumLoad(); 414 mediaServerItem = mediaServerService.getMediaServerForMinimumLoad();
413 - }else { 415 + } else {
414 mediaServerItem = mediaServerService.getOne(mediaServerId); 416 mediaServerItem = mediaServerService.getOne(mediaServerId);
415 } 417 }
416 if (mediaServerItem == null) { 418 if (mediaServerItem == null) {
@@ -421,8 +423,8 @@ public class PlayServiceImpl implements IPlayService { @@ -421,8 +423,8 @@ public class PlayServiceImpl implements IPlayService {
421 423
422 @Override 424 @Override
423 public DeferredResult<WVPResult<StreamInfo>> playBack(String deviceId, String channelId, String startTime, 425 public DeferredResult<WVPResult<StreamInfo>> playBack(String deviceId, String channelId, String startTime,
424 - String endTime,InviteStreamCallback inviteStreamCallback,  
425 - PlayBackCallback callback) { 426 + String endTime, InviteStreamCallback inviteStreamCallback,
  427 + PlayBackCallback callback) {
426 Device device = storager.queryVideoDevice(deviceId); 428 Device device = storager.queryVideoDevice(deviceId);
427 if (device == null) { 429 if (device == null) {
428 return null; 430 return null;
@@ -435,9 +437,9 @@ public class PlayServiceImpl implements IPlayService { @@ -435,9 +437,9 @@ public class PlayServiceImpl implements IPlayService {
435 437
436 @Override 438 @Override
437 public DeferredResult<WVPResult<StreamInfo>> playBack(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo, 439 public DeferredResult<WVPResult<StreamInfo>> playBack(MediaServerItem mediaServerItem, SSRCInfo ssrcInfo,
438 - String deviceId, String channelId, String startTime,  
439 - String endTime, InviteStreamCallback infoCallBack,  
440 - PlayBackCallback playBackCallback) { 440 + String deviceId, String channelId, String startTime,
  441 + String endTime, InviteStreamCallback infoCallBack,
  442 + PlayBackCallback playBackCallback) {
441 if (mediaServerItem == null || ssrcInfo == null) { 443 if (mediaServerItem == null || ssrcInfo == null) {
442 return null; 444 return null;
443 } 445 }
@@ -454,7 +456,7 @@ public class PlayServiceImpl implements IPlayService { @@ -454,7 +456,7 @@ public class PlayServiceImpl implements IPlayService {
454 requestMessage.setKey(key); 456 requestMessage.setKey(key);
455 PlayBackResult<RequestMessage> playBackResult = new PlayBackResult<>(); 457 PlayBackResult<RequestMessage> playBackResult = new PlayBackResult<>();
456 String playBackTimeOutTaskKey = UUID.randomUUID().toString(); 458 String playBackTimeOutTaskKey = UUID.randomUUID().toString();
457 - dynamicTask.startDelay(playBackTimeOutTaskKey, ()->{ 459 + dynamicTask.startDelay(playBackTimeOutTaskKey, () -> {
458 logger.warn(String.format("设备回放超时,deviceId:%s ,channelId:%s", deviceId, channelId)); 460 logger.warn(String.format("设备回放超时,deviceId:%s ,channelId:%s", deviceId, channelId));
459 playBackResult.setCode(ErrorCode.ERROR100.getCode()); 461 playBackResult.setCode(ErrorCode.ERROR100.getCode());
460 playBackResult.setMsg("回放超时"); 462 playBackResult.setMsg("回放超时");
@@ -514,7 +516,7 @@ public class PlayServiceImpl implements IPlayService { @@ -514,7 +516,7 @@ public class PlayServiceImpl implements IPlayService {
514 cmder.playbackStreamCmd(mediaServerItem, ssrcInfo, device, channelId, startTime, endTime, infoCallBack, 516 cmder.playbackStreamCmd(mediaServerItem, ssrcInfo, device, channelId, startTime, endTime, infoCallBack,
515 hookEvent, eventResult -> { 517 hookEvent, eventResult -> {
516 if (eventResult.type == SipSubscribe.EventResultType.response) { 518 if (eventResult.type == SipSubscribe.EventResultType.response) {
517 - ResponseEvent responseEvent = (ResponseEvent)eventResult.event; 519 + ResponseEvent responseEvent = (ResponseEvent) eventResult.event;
518 String contentString = new String(responseEvent.getResponse().getRawContent()); 520 String contentString = new String(responseEvent.getResponse().getRawContent());
519 // 获取ssrc 521 // 获取ssrc
520 int ssrcIndex = contentString.indexOf("y="); 522 int ssrcIndex = contentString.indexOf("y=");
@@ -526,7 +528,7 @@ public class PlayServiceImpl implements IPlayService { @@ -526,7 +528,7 @@ public class PlayServiceImpl implements IPlayService {
526 if (ssrcInfo.getSsrc().equals(ssrcInResponse)) { 528 if (ssrcInfo.getSsrc().equals(ssrcInResponse)) {
527 return; 529 return;
528 } 530 }
529 - logger.info("[回放消息] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse ); 531 + logger.info("[回放消息] 收到invite 200, 发现下级自定义了ssrc: {}", ssrcInResponse);
530 if (!mediaServerItem.isRtpEnable() || device.isSsrcCheck()) { 532 if (!mediaServerItem.isRtpEnable() || device.isSsrcCheck()) {
531 logger.info("[回放消息] SSRC修正 {}->{}", ssrcInfo.getSsrc(), ssrcInResponse); 533 logger.info("[回放消息] SSRC修正 {}->{}", ssrcInfo.getSsrc(), ssrcInResponse);
532 534
@@ -547,7 +549,7 @@ public class PlayServiceImpl implements IPlayService { @@ -547,7 +549,7 @@ public class PlayServiceImpl implements IPlayService {
547 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId()); 549 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId());
548 subscribe.removeSubscribe(hookSubscribe); 550 subscribe.removeSubscribe(hookSubscribe);
549 hookSubscribe.getContent().put("stream", String.format("%08x", Integer.parseInt(ssrcInResponse)).toUpperCase()); 551 hookSubscribe.getContent().put("stream", String.format("%08x", Integer.parseInt(ssrcInResponse)).toUpperCase());
550 - subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject response)->{ 552 + subscribe.addSubscribe(hookSubscribe, (MediaServerItem mediaServerItemInUse, JSONObject response) -> {
551 logger.info("[ZLM HOOK] ssrc修正后收到订阅消息: " + response.toJSONString()); 553 logger.info("[ZLM HOOK] ssrc修正后收到订阅消息: " + response.toJSONString());
552 dynamicTask.stop(playBackTimeOutTaskKey); 554 dynamicTask.stop(playBackTimeOutTaskKey);
553 // hook响应 555 // hook响应
@@ -583,7 +585,7 @@ public class PlayServiceImpl implements IPlayService { @@ -583,7 +585,7 @@ public class PlayServiceImpl implements IPlayService {
583 MediaServerItem newMediaServerItem = getNewMediaServerItem(device); 585 MediaServerItem newMediaServerItem = getNewMediaServerItem(device);
584 SSRCInfo ssrcInfo = mediaServerService.openRTPServer(newMediaServerItem, null, true, true); 586 SSRCInfo ssrcInfo = mediaServerService.openRTPServer(newMediaServerItem, null, true, true);
585 587
586 - return download(newMediaServerItem, ssrcInfo, deviceId, channelId, startTime, endTime, downloadSpeed,infoCallBack, hookCallBack); 588 + return download(newMediaServerItem, ssrcInfo, deviceId, channelId, startTime, endTime, downloadSpeed, infoCallBack, hookCallBack);
587 } 589 }
588 590
589 @Override 591 @Override
@@ -609,7 +611,7 @@ public class PlayServiceImpl implements IPlayService { @@ -609,7 +611,7 @@ public class PlayServiceImpl implements IPlayService {
609 downloadResult.setData(requestMessage); 611 downloadResult.setData(requestMessage);
610 612
611 String downLoadTimeOutTaskKey = UUID.randomUUID().toString(); 613 String downLoadTimeOutTaskKey = UUID.randomUUID().toString();
612 - dynamicTask.startDelay(downLoadTimeOutTaskKey, ()->{ 614 + dynamicTask.startDelay(downLoadTimeOutTaskKey, () -> {
613 logger.warn(String.format("录像下载请求超时,deviceId:%s ,channelId:%s", deviceId, channelId)); 615 logger.warn(String.format("录像下载请求超时,deviceId:%s ,channelId:%s", deviceId, channelId));
614 wvpResult.setCode(ErrorCode.ERROR100.getCode()); 616 wvpResult.setCode(ErrorCode.ERROR100.getCode());
615 wvpResult.setMsg("录像下载请求超时"); 617 wvpResult.setMsg("录像下载请求超时");
@@ -692,15 +694,15 @@ public class PlayServiceImpl implements IPlayService { @@ -692,15 +694,15 @@ public class PlayServiceImpl implements IPlayService {
692 694
693 if (duration == 0) { 695 if (duration == 0) {
694 streamInfo.setProgress(0); 696 streamInfo.setProgress(0);
695 - }else { 697 + } else {
696 String startTime = streamInfo.getStartTime(); 698 String startTime = streamInfo.getStartTime();
697 String endTime = streamInfo.getEndTime(); 699 String endTime = streamInfo.getEndTime();
698 long start = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime); 700 long start = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime);
699 long end = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime); 701 long end = DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime);
700 702
701 - BigDecimal currentCount = new BigDecimal(duration/1000);  
702 - BigDecimal totalCount = new BigDecimal(end-start);  
703 - BigDecimal divide = currentCount.divide(totalCount,2, RoundingMode.HALF_UP); 703 + BigDecimal currentCount = new BigDecimal(duration / 1000);
  704 + BigDecimal totalCount = new BigDecimal(end - start);
  705 + BigDecimal divide = currentCount.divide(totalCount, 2, RoundingMode.HALF_UP);
704 double process = divide.doubleValue(); 706 double process = divide.doubleValue();
705 streamInfo.setProgress(process); 707 streamInfo.setProgress(process);
706 } 708 }
@@ -731,7 +733,7 @@ public class PlayServiceImpl implements IPlayService { @@ -731,7 +733,7 @@ public class PlayServiceImpl implements IPlayService {
731 public StreamInfo onPublishHandler(MediaServerItem mediaServerItem, JSONObject resonse, String deviceId, String channelId) { 733 public StreamInfo onPublishHandler(MediaServerItem mediaServerItem, JSONObject resonse, String deviceId, String channelId) {
732 String streamId = resonse.getString("stream"); 734 String streamId = resonse.getString("stream");
733 JSONArray tracks = resonse.getJSONArray("tracks"); 735 JSONArray tracks = resonse.getJSONArray("tracks");
734 - StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem,"rtp", streamId, tracks, null); 736 + StreamInfo streamInfo = mediaService.getStreamInfoByAppAndStream(mediaServerItem, "rtp", streamId, tracks, null);
735 streamInfo.setDeviceID(deviceId); 737 streamInfo.setDeviceID(deviceId);
736 streamInfo.setChannelId(channelId); 738 streamInfo.setChannelId(channelId);
737 return streamInfo; 739 return streamInfo;
@@ -757,7 +759,7 @@ public class PlayServiceImpl implements IPlayService { @@ -757,7 +759,7 @@ public class PlayServiceImpl implements IPlayService {
757 List<SsrcTransaction> allSsrc = streamSession.getAllSsrc(); 759 List<SsrcTransaction> allSsrc = streamSession.getAllSsrc();
758 if (allSsrc.size() > 0) { 760 if (allSsrc.size() > 0) {
759 for (SsrcTransaction ssrcTransaction : allSsrc) { 761 for (SsrcTransaction ssrcTransaction : allSsrc) {
760 - if(ssrcTransaction.getMediaServerId().equals(mediaServerId)) { 762 + if (ssrcTransaction.getMediaServerId().equals(mediaServerId)) {
761 Device device = deviceService.queryDevice(ssrcTransaction.getDeviceId()); 763 Device device = deviceService.queryDevice(ssrcTransaction.getDeviceId());
762 if (device == null) { 764 if (device == null) {
763 continue; 765 continue;
@@ -766,7 +768,7 @@ public class PlayServiceImpl implements IPlayService { @@ -766,7 +768,7 @@ public class PlayServiceImpl implements IPlayService {
766 cmder.streamByeCmd(device, ssrcTransaction.getChannelId(), 768 cmder.streamByeCmd(device, ssrcTransaction.getChannelId(),
767 ssrcTransaction.getStream(), null); 769 ssrcTransaction.getStream(), null);
768 } catch (InvalidArgumentException | ParseException | SipException | 770 } catch (InvalidArgumentException | ParseException | SipException |
769 - SsrcTransactionNotFoundException e) { 771 + SsrcTransactionNotFoundException e) {
770 logger.error("[zlm离线]为正在使用此zlm的设备, 发送BYE失败 {}", e.getMessage()); 772 logger.error("[zlm离线]为正在使用此zlm的设备, 发送BYE失败 {}", e.getMessage());
771 } 773 }
772 } 774 }