Commit f82dd1bdf831288c769f54796e5cf8130edb993b

Authored by liujun001
1 parent fd94cb80

优化

src/main/java/com/genersoft/iot/vmp/conf/StreamProxyTask.java
... ... @@ -26,7 +26,7 @@ public class StreamProxyTask {
26 26 @Autowired
27 27 private IStreamProxyService streamProxyService;
28 28  
29   - @Scheduled(cron = "0 15 * * * ? ")
  29 + @Scheduled(cron = "0 45 * * * ? ")
30 30 public void work() {
31 31 streamProxyService.choose1078Lister();
32 32  
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
... ... @@ -423,6 +423,9 @@ public class StreamProxyServiceImpl implements IStreamProxyService {
423 423 updateStreamProxy(streamProxy);
424 424 } else if (jsonObject.getInteger("code") == -1) {
425 425 redisTemplate.opsForValue().set("stream:status:" + stream, "1", 30, TimeUnit.SECONDS);
  426 + if(StringUtils.equals(jsonObject.getString("msg"),"This stream already exists" )){
  427 + redisTemplate.opsForValue().set("stream:status:" + stream, "2", 30, TimeUnit.SECONDS);
  428 + }
426 429 } else {
427 430 logger.info("启用代理失败: {}/{}->{}({})", app, stream, jsonObject.getString("msg"),
428 431 streamProxy.getSrcUrl() == null ? streamProxy.getUrl() : streamProxy.getSrcUrl());
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/StremProxyService1078Impl.java
... ... @@ -58,14 +58,13 @@ public class StremProxyService1078Impl implements StremProxyService1078 {
58 58  
59 59 String url = null;
60 60 try {
61   - url = StringUtils.replace(this.jt1078ConfigBean.getJt1078Url(), "{0}", this.jt1078ConfigBean.getJt1078SendPort());
  61 + url = StringUtils.replace(this.jt1078ConfigBean.getJt1078Url(), "{0}", this.jt1078ConfigBean.getStopSendPort());
62 62 HttpClientPostEntity entity = httpClientUtil.doPost(url, msg, null);
63 63  
64 64 url = jt1078ConfigBean.formatStopPushURL(stream, port, httpPort);
65 65 httpClientUtil.doGet(url, null);
66 66  
67 67  
68   -
69 68 if (Objects.isNull(entity)) {
70 69 log.info("HttpClientPostEntity is null");
71 70 } else {
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/jt1078/platform/Jt1078OfCarController.java
... ... @@ -12,8 +12,10 @@ import com.alibaba.fastjson2.JSONObject;
12 12 import com.genersoft.iot.vmp.conf.MediaConfig;
13 13 import com.genersoft.iot.vmp.conf.StreamProxyTask;
14 14 import com.genersoft.iot.vmp.conf.exception.ControllerException;
  15 +import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
15 16 import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem;
16 17 import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
  18 +import com.genersoft.iot.vmp.service.IStreamProxyService;
17 19 import com.genersoft.iot.vmp.service.IStreamPushService;
18 20 import com.genersoft.iot.vmp.service.StremProxyService1078;
19 21 import com.genersoft.iot.vmp.vmanager.bean.StreamContent;
... ... @@ -91,6 +93,8 @@ public class Jt1078OfCarController {
91 93 private StremProxyService1078 stremProxyService1078;
92 94 private static final long TIME_COUNT = 300000L;
93 95 private Date tokenDate;
  96 + @Autowired
  97 + private IStreamProxyService streamProxyService;
94 98  
95 99 @Value("${spring.profiles.active}")
96 100 private String profilesActive;
... ... @@ -198,30 +202,27 @@ public class Jt1078OfCarController {
198 202 this.redisTemplate.opsForValue().set("tag:history:httpPort:" + stream, entity.getHttpPort(), 2L, TimeUnit.DAYS);
199 203 this.redisTemplate.opsForValue().set("tag:history:httpPort:time:" + stream, (new Date()).getTime(), StreamProxyTask.TIME_OUT, TimeUnit.SECONDS);
200 204 msg = this.jt1078ConfigBean.formatMessageId(sim, channel, this.rtspConfigBean, entity.getPort());
201   - entity = this.httpClientUtil.doPost(url, msg, (String) null);
  205 + HttpClientPostEntity entity1 = this.httpClientUtil.doPost(url, msg, (String) null);
202 206 Map<String, Object> resultMap1 = this.chooseEntity(entity, url, false);
203 207 if (Objects.nonNull(resultMap1)) {
204 208 return resultMap1;
205 209 }
206 210  
207   - log.info(entity.getResultStr());
208   - Thread.sleep(2000L);
209   - this.createStreamProxy(sim + "-" + channel);
210   - Map<String, Object> resultMap2 = this.getStreamContent(stream);
  211 + log.info(entity1.getResultStr());
  212 + this.createStreamProxy(sim + "-" + channel, entity.getHttpPort());
  213 + Map<String, Object> resultMap2 = this.getStreamContent(stream, entity.getHttpPort());
211 214 if (Objects.nonNull(resultMap2) && Objects.nonNull(resultMap2.get("code")) && !StringUtils.equals(resultMap2.get("code").toString(), "1")) {
212 215 return resultMap2;
213 216 }
214 217  
215 218 streamContent = (StreamContent) resultMap2.get("streamContent");
216   - }else{
217   - resultMap.put("port", redisTemplate.opsForValue().get("tag:history:port:"+stream));
218   - resultMap.put("httpPort", redisTemplate.opsForValue().get("tag:history:httpPort:"+stream));
  219 + } else {
  220 + resultMap.put("port", redisTemplate.opsForValue().get("tag:history:port:" + stream));
  221 + resultMap.put("httpPort", redisTemplate.opsForValue().get("tag:history:httpPort:" + stream));
219 222 resultMap.put("stream", stream);
220 223 }
221 224  
222 225  
223   -
224   -
225 226 resultMap.put("code", "1");
226 227 resultMap.put("message", "OK");
227 228 resultMap.put("data", streamContent);
... ... @@ -253,7 +254,7 @@ public class Jt1078OfCarController {
253 254 return resultMap1;
254 255 } else {
255 256 try {
256   - this.streamProxyController.del(stream, stream);
  257 + this.streamProxyController.del("schedule", stream);
257 258 List<StreamPushItem> streamPushItems = this.streamPushService.getPushList(stream);
258 259 int count = CollectionUtils.size(streamPushItems);
259 260  
... ... @@ -261,6 +262,60 @@ public class Jt1078OfCarController {
261 262 StreamPushItem item = streamPushItems.get(i);
262 263  
263 264 try {
  265 + this.streamProxyController.del(item.getApp(), item.getStream());
  266 + this.streamPushService.stop(item.getApp(), item.getStream());
  267 + } catch (Exception var13) {
  268 + Exception e = var13;
  269 + log.error("推流停止失败,[{}]", item, e);
  270 + }
  271 + }
  272 +
  273 + resultMap.put("code", "1");
  274 + resultMap.put("message", "OK");
  275 + return resultMap;
  276 + } catch (Exception var14) {
  277 + resultMap.put("code", "-20");
  278 + resultMap.put("msg", "发送停止推流指令异常");
  279 + return resultMap;
  280 + }
  281 + }
  282 + }
  283 + }
  284 +
  285 + @GetMapping({"/send/stop/io/{sim}/{channel}"})
  286 + public Map<String, Object> sendIORequestStop(@PathVariable String sim, @PathVariable String channel) {
  287 + Map<String, Object> resultMap = new HashMap();
  288 + if (StringUtils.isBlank(sim)) {
  289 + resultMap.put("code", "-100");
  290 + resultMap.put("msg", "sim 不能为空");
  291 + return resultMap;
  292 + } else if (StringUtils.isBlank(channel)) {
  293 + resultMap.put("code", "-100");
  294 + resultMap.put("msg", "channel 不能为空");
  295 + return resultMap;
  296 + } else {
  297 + String stream = StringUtils.join(new String[]{sim, "-", channel});
  298 + Integer port = (Integer) redisTemplate.opsForValue().get("tag:history:port:" + stream);
  299 + Integer httpPort = (Integer) redisTemplate.opsForValue().get("tag:history:httpPort:" + stream);
  300 + if (Objects.isNull(port) || Objects.isNull(httpPort)) {
  301 + resultMap.put("code", "1");
  302 + resultMap.put("message", "OK");
  303 + return resultMap;
  304 + }
  305 + Map<String, Object> resultMap1 = this.stremProxyService1078.sendIORequestStop(sim, channel, stream, port, httpPort);
  306 + if (Objects.nonNull(resultMap1) && Objects.nonNull(resultMap1.get("code")) && !StringUtils.equals(resultMap1.get("code").toString(), "1")) {
  307 + return resultMap1;
  308 + } else {
  309 + try {
  310 + this.streamProxyController.del("schedule", stream);
  311 + List<StreamPushItem> streamPushItems = this.streamPushService.getPushList(stream);
  312 + int count = CollectionUtils.size(streamPushItems);
  313 +
  314 + for (int i = 0; i < count; ++i) {
  315 + StreamPushItem item = streamPushItems.get(i);
  316 +
  317 + try {
  318 + this.streamProxyController.del(item.getApp(), item.getStream());
264 319 this.streamPushService.stop(item.getApp(), item.getStream());
265 320 } catch (Exception var13) {
266 321 Exception e = var13;
... ... @@ -324,12 +379,12 @@ public class Jt1078OfCarController {
324 379 for (Object o : jsonArray) {
325 380 JSONObject jo = (JSONObject) o;
326 381 String startTimeStr = jo.getString("startTime");
327   - if(StringUtils.isEmpty(startTimeStr)){
  382 + if (StringUtils.isEmpty(startTimeStr)) {
328 383 startTimeStr = StringUtils.join(String.valueOf(System.currentTimeMillis()), "-", String.valueOf(RandomUtils.nextInt(1, 1000)));
329   - }else{
330   - startTimeStr = StringUtils.replace(startTimeStr,"-","");
331   - startTimeStr = StringUtils.replace(startTimeStr,":","");
332   - startTimeStr = StringUtils.replace(startTimeStr," ","");
  384 + } else {
  385 + startTimeStr = StringUtils.replace(startTimeStr, "-", "");
  386 + startTimeStr = StringUtils.replace(startTimeStr, ":", "");
  387 + startTimeStr = StringUtils.replace(startTimeStr, " ", "");
333 388 }
334 389 String channelMapping = StringUtils.join(new String[]{sim, "-", startTimeStr, "-", channel});
335 390 jo.put("channelMapping", channelMapping);
... ... @@ -379,13 +434,13 @@ public class Jt1078OfCarController {
379 434 return resultMap;
380 435 } else {
381 436 StreamContent streamContent = this.getStreamContentPlayURL(StringUtils.join(new String[]{channelMapping}));
382   - if(Objects.nonNull(streamContent) && StringUtils.isNotEmpty(streamContent.getWs_flv())){
  437 + if (Objects.nonNull(streamContent) && StringUtils.isNotEmpty(streamContent.getWs_flv())) {
383 438 resultMap.put("code", "1");
384 439 log.info("StreamContent:[{}]", streamContent);
385 440 resultMap.put("data", streamContent);
386 441  
387   - resultMap.put("port", redisTemplate.opsForValue().get("tag:history:port:"+channelMapping));
388   - resultMap.put("httpPort", redisTemplate.opsForValue().get("tag:history:httpPort:"+channelMapping));
  442 + resultMap.put("port", redisTemplate.opsForValue().get("tag:history:port:" + channelMapping));
  443 + resultMap.put("httpPort", redisTemplate.opsForValue().get("tag:history:httpPort:" + channelMapping));
389 444 resultMap.put("stream", channelMapping);
390 445 return resultMap;
391 446 }
... ... @@ -415,21 +470,20 @@ public class Jt1078OfCarController {
415 470 msg = this.jt1078ConfigBean.formatMessageHistoryPlayRTSP(sim, channel, startTime, endTime, this.rtspConfigBean, entity.getPort());
416 471  
417 472 log.info("获取推流");
418   - this.createStreamProxy(sim + "-" + channel);
  473 + this.createStreamProxy(sim + "-" + channel, entity.getHttpPort());
419 474 entity = this.httpClientUtil.doPost(url, msg, (String) null);
420 475 Map<String, Object> resultMap2 = this.chooseEntity(entity, url, true);
421 476 if (Objects.nonNull(resultMap2)) {
422 477 return resultMap2;
423 478 } else {
424 479 log.info(entity.getResultStr());
425   - this.createStreamProxy(channelMapping);
  480 + this.createStreamProxy(channelMapping, entity.getHttpPort());
426 481 resultMap.put("code", "1");
427   - Thread.sleep(2000L);
428   - Map<String, Object> resultMap3 = this.getStreamContent(channelMapping);
  482 + Map<String, Object> resultMap3 = this.getStreamContent(channelMapping, entity.getHttpPort());
429 483 if (Objects.nonNull(resultMap3) && Objects.nonNull(resultMap3.get("code")) && !StringUtils.equals(resultMap3.get("code").toString(), "1")) {
430 484 return resultMap3;
431 485 } else {
432   - streamContent = (StreamContent) resultMap3.get("streamContent");
  486 + streamContent = (StreamContent) resultMap3.get("streamContent");
433 487 if (Objects.isNull(streamContent)) {
434 488 resultMap.put("code", "-20");
435 489 resultMap.put("msg", "新建链接错误,请稍后再试");
... ... @@ -468,70 +522,85 @@ public class Jt1078OfCarController {
468 522 }
469 523  
470 524 @Nullable
471   - private Map<String, Object> getStreamContent(String stream) throws InterruptedException {
472   - StreamContent streamContent = null;
  525 + private Map<String, Object> getStreamContent(String stream, int httpPort) throws InterruptedException {
  526 +
473 527 Map<String, Object> datas = new HashMap();
474   - int index = 0;
  528 + StreamContent streamContent = requestStreamContent(1, stream, httpPort);
475 529  
476   - Integer countTimeOut = 0;
  530 + if (Objects.isNull(streamContent) || StringUtils.isEmpty(streamContent.getWs_flv())) {
  531 + streamContent = new StreamContent();
  532 + streamContent.setWs_flv(StringUtils.replace(this.jt1078ConfigBean.getWs(), "{stream}", stream));
  533 + streamContent.setWss_flv(StringUtils.replace(this.jt1078ConfigBean.getWss(), "{stream}", stream));
477 534  
478   - do {
479   - ++index;
480   - streamContent = this.getStreamContentPlayURL(stream);
481   - if (Objects.nonNull(streamContent) && StringUtils.isNotEmpty(streamContent.getWs_flv())) {
482   - break;
483   - }
484 535  
485   - Object valObj = redisTemplate.opsForValue().get("stream:status:" + stream);
486   - if (Objects.nonNull(valObj) && StringUtils.equals(valObj.toString(), "1")) {
487   - StreamProxyItem streamProxyItem = streamProxyController.one("schedule",stream);
488   - if(Objects.nonNull(streamProxyItem) && StringUtils.isNotEmpty(streamProxyItem.getApp())){
489   - try {
490   - streamProxyController.start("schedule", stream);
491   - } catch (Exception e) {
492   - log.error(e.getMessage());
493   - }
494   - }else{
495   - createStreamProxy(stream);
  536 + new Thread(new Runnable() {
  537 + @Override
  538 + public void run() {
  539 + requestStreamContent(100, stream, httpPort);
496 540 }
  541 + }).start();
  542 + }
497 543  
  544 + log.info("StreamContent:[{}]", streamContent);
  545 + datas.put("code", "1");
  546 + datas.put("streamContent", streamContent);
  547 + return datas;
  548 + }
498 549  
499   - }else{
500   - Object val = this.redisTemplate.opsForValue().get("timeout:" + stream);
501   - if (Objects.nonNull(val) && StringUtils.equals(val.toString(), "1")) {
502   -
503   - countTimeOut++;
504   - try {
505   - streamProxyController.start("schedule", stream);
506   - } catch (Exception e) {
507   - log.error(e.getMessage());
508   - }
  550 + private StreamContent requestStreamContent(int count, String stream, int httpPort) {
  551 + int index = 0;
  552 + StreamContent streamContent = null;
  553 + try {
  554 + do {
  555 + ++index;
  556 + streamContent = this.getStreamContentPlayURL(stream);
  557 + if (Objects.nonNull(streamContent) && StringUtils.isNotEmpty(streamContent.getWs_flv())) {
  558 + break;
509 559 }
510   - }
511 560  
  561 + Object valObj = redisTemplate.opsForValue().get("stream:status:" + stream);
  562 + if (Objects.nonNull(valObj) && StringUtils.equals(valObj.toString(), "1")) {
  563 + StreamProxyItem streamProxyItem = streamProxyController.one("schedule", stream);
  564 + if (Objects.nonNull(streamProxyItem) && StringUtils.isNotEmpty(streamProxyItem.getApp())) {
  565 + try {
  566 + streamProxyController.start("schedule", stream);
  567 + } catch (Exception e) {
  568 + log.error(e.getMessage());
  569 + }
  570 + } else {
  571 + createStreamProxy(stream, httpPort);
  572 + }
512 573  
513 574  
514   - Thread.sleep(1000L);
515   - log.info("===============>" + index);
516   - } while (index < 20);
  575 + } else if (Objects.nonNull(valObj) && StringUtils.equals(valObj.toString(), "2")) {
  576 +// streamProxyService.del("schedule", stream);
  577 +// redisTemplate.delete("stream:status:" + stream);
  578 +// createStreamProxy(stream,httpPort);
  579 + } else {
  580 + Object val = this.redisTemplate.opsForValue().get("timeout:" + stream);
  581 + if (Objects.nonNull(val) && StringUtils.equals(val.toString(), "1")) {
  582 + try {
  583 + streamProxyController.start("schedule", stream);
  584 + } catch (Exception e) {
  585 + log.error(e.getMessage());
  586 + }
  587 + }
  588 + }
  589 + if (index >= count) {
  590 + break;
  591 + }
517 592  
518   - if (countTimeOut > 0) {
519   - datas.put("code", "301");
520   - datas.put("msg", "获取摄像头视频数据失败,请稍后再试");
521   - return datas;
522   - }
  593 + try {
  594 + Thread.sleep(1000L);
  595 + } catch (InterruptedException e) {
  596 + log.info(e.getMessage());
  597 + }
  598 + } while (index < count);
523 599  
524   - log.info("===============>" + index);
525   - if (Objects.isNull(streamContent)) {
526   - streamContent = new StreamContent();
527   - streamContent.setWs_flv(StringUtils.replace(this.jt1078ConfigBean.getWs(), "{stream}", stream));
528   - streamContent.setWss_flv(StringUtils.replace(this.jt1078ConfigBean.getWss(), "{stream}", stream));
  600 + } catch (Exception e) {
  601 + log.error(e.getMessage());
529 602 }
530   -
531   - log.info("StreamContent:[{}]", streamContent);
532   - datas.put("code", "1");
533   - datas.put("streamContent", streamContent);
534   - return datas;
  603 + return streamContent;
535 604 }
536 605  
537 606 private StreamContent getStreamContentPlayURL(String stream) {
... ... @@ -632,8 +701,13 @@ public class Jt1078OfCarController {
632 701 }
633 702  
634 703 private HttpClientPostEntity createServerLister(String channelMapping) throws URISyntaxException, IOException {
  704 +
635 705 Integer port = RandomUtils.nextInt(this.jt1078ConfigBean.getStart1078Port(), this.jt1078ConfigBean.getEnd1078Port());
636   - Integer httPort = RandomUtils.nextInt(this.jt1078ConfigBean.getStart1078Port(), this.jt1078ConfigBean.getEnd1078Port());
  706 + while (port % 2 == 1 || port == jt1078ConfigBean.getStart1078Port()) {
  707 + port = RandomUtils.nextInt(this.jt1078ConfigBean.getStart1078Port(), this.jt1078ConfigBean.getEnd1078Port());
  708 + }
  709 + Integer httPort = 3333;
  710 +
637 711 String url;
638 712 if (!Objects.equals(port, httPort) && Objects.nonNull(port)) {
639 713 url = "jt1078:server:port:" + port;
... ... @@ -710,23 +784,46 @@ public class Jt1078OfCarController {
710 784 }
711 785 }
712 786  
713   - private void createStreamProxy(String stream) {
714   - String url = StringUtils.replace(this.jt1078ConfigBean.getGetURL(), "{stream}", stream);
715   - StreamProxyItem item = new StreamProxyItem();
716   - item.setApp("schedule");
717   - item.setEnable(true);
718   - item.setEnableAudio(true);
719   - item.setRtpType("default");
720   - item.setStream(stream);
721   - item.setMediaServerId(this.mediaConfig.getId());
722   - item.setUrl(url);
723   - item.setFfmpegCmdKey("ffmpeg.cmd");
724   - item.setEnable(true);
725   - item.setEnableAudio(true);
726   - item.setEnableMp4(false);
727   - item.setEnableRemoveNoneReader(false);
728   - item.setEnableDisableNoneReader(false);
729   - item.setName(stream);
730   - this.streamProxyController.save(item);
  787 + private void createStreamProxy(String stream, Integer port) throws URISyntaxException, IOException {
  788 + new Thread(new Runnable() {
  789 + @Override
  790 + public void run() {
  791 + int index = 0;
  792 + while (index < 100) {
  793 + index++;
  794 + try {
  795 + boolean flag = httpClientUtil.doGetNoResult(jt1078ConfigBean.formatVideoURL(stream));
  796 + if (flag) {
  797 + String url = StringUtils.replace(jt1078ConfigBean.getGetURL(), "{stream}", stream);
  798 + url = StringUtils.replace(url, "{port}", port + "");
  799 + StreamProxyItem item = new StreamProxyItem();
  800 + item.setApp("schedule");
  801 + item.setEnable(true);
  802 + item.setEnableAudio(true);
  803 + item.setRtpType("default");
  804 + item.setStream(stream);
  805 + item.setMediaServerId(mediaConfig.getId());
  806 + item.setUrl(url);
  807 + item.setFfmpegCmdKey("ffmpeg.cmd");
  808 + item.setEnable(true);
  809 + item.setEnableAudio(true);
  810 + item.setEnableMp4(false);
  811 + item.setEnableRemoveNoneReader(false);
  812 + item.setEnableDisableNoneReader(false);
  813 + item.setName(stream);
  814 + streamProxyController.save(item);
  815 + break;
  816 + }
  817 + } catch (URISyntaxException e) {
  818 + log.info(e.getMessage());
  819 + } catch (IOException e) {
  820 + log.info(e.getMessage());
  821 + }
  822 +
  823 + }
  824 + }
  825 + }).start();
  826 +
  827 +
731 828 }
732 829 }
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/jt1078/platform/config/Jt1078ConfigBean.java
1   -package com.genersoft.iot.vmp.vmanager.jt1078.platform.config; import com.genersoft.iot.vmp.vmanager.jt1078.platform.config.RtspConfigBean; import java.util.Objects; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class Jt1078ConfigBean { @Value("${tuohua.bsth.jt1078.url}") private String jt1078Url; @Value("${tuohua.bsth.jt1078.sendPort}") private String jt1078SendPort; @Value("${tuohua.bsth.jt1078.stopSendPort}") private String stopSendPort; @Value("${tuohua.bsth.jt1078.historyListPort}") private String historyListPort; @Value("${tuohua.bsth.jt1078.playHistoryPort}") private String playHistoryPort; @Value("${tuohua.bsth.jt1078.ports}") private String portsOf1078; @Value("${tuohua.bsth.jt1078.pushURL}") private String pushURL; @Value("${tuohua.bsth.jt1078.stopPushURL}") private String stopPUshURL; private Integer start1078Port; private Integer end1078Port; @Value("${tuohua.bsth.jt1078.get.url}") private String getURL; @Value("${tuohua.bsth.jt1078.addPortVal}") private Integer addPort; @Value("${tuohua.bsth.jt1078.ws}") private String ws; @Value("${tuohua.bsth.jt1078.wss}") private String wss; private static final String SEND_IO_MESSAGE_RTSP = "{ \"messageId\": 37121, \"properties\": 0, \"clientId\": \"{clientId}\", \"serialNo\": \"1\", \"ip\": \"{ip}\", \"tcpPort\": \"{tcpPort}\", \"udpPort\": \"{udpPort}\", \"channelNo\": \"{channelNo}\", \"mediaType\": \"1\", \"streamType\": \"1\"}"; private static final String SEND_IO_MESSAGE_RTSP_STOP = "{\"messageId\": 37122,\"properties\": 0,\"clientId\": \"{clientId}\",\"serialNo\": \"1\",\"channelNo\": \"{channelNo}\",\"command\": \"0\",\"closeType\": \"0\",\"streamType\": \"1\"}"; private static final String SEND_IO_HISTORY_RTSP = "{\"msgid\":37381,\"clientId\":\"{clientId}\",\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"channelId\":{channelNo}}"; private static final String SEND_IO_PLAY_RTSP = "{\"ip\":\"{ip}\",\"tcpPort\":{tcpPort},\"udpPort\":{udpPort},\"channelNo\":\"{channelNo}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"playbackType\":0,\"playbackSpeed\":1,\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"clientId\":\"{sim}\",\"messageId\":37377}"; public String formatMessageId(String sim, String channel, RtspConfigBean configBean, Integer port) { String msg = StringUtils.replace("{ \"messageId\": 37121, \"properties\": 0, \"clientId\": \"{clientId}\", \"serialNo\": \"1\", \"ip\": \"{ip}\", \"tcpPort\": \"{tcpPort}\", \"udpPort\": \"{udpPort}\", \"channelNo\": \"{channelNo}\", \"mediaType\": \"1\", \"streamType\": \"1\"}", "{clientId}", sim); msg = StringUtils.replace(msg, "{tcpPort}", (port.intValue() + getAddPort().intValue()) + ""); msg = StringUtils.replace(msg, "{udpPort}", (port.intValue() + getAddPort().intValue()) + ""); msg = StringUtils.replace(msg, "{channelNo}", channel); return StringUtils.replace(msg, "{ip}", configBean.getRtspIp()); } public String formatMessageStop(String sim, String channel) { String msg = StringUtils.replace("{\"messageId\": 37122,\"properties\": 0,\"clientId\": \"{clientId}\",\"serialNo\": \"1\",\"channelNo\": \"{channelNo}\",\"command\": \"0\",\"closeType\": \"0\",\"streamType\": \"1\"}", "{clientId}", sim); return StringUtils.replace(msg, "{channelNo}", channel); } public String formatMessageHistoryListRTSP(String sim, String channel, String startTime, String endTime) { String msg = StringUtils.replace("{\"msgid\":37381,\"clientId\":\"{clientId}\",\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"channelId\":{channelNo}}", "{clientId}", sim); msg = StringUtils.replace(msg, "{startTime}", startTime); msg = StringUtils.replace(msg, "{endTime}", endTime); return StringUtils.replace(msg, "{channelNo}", channel); } public String formatMessageHistoryPlayRTSP(String sim, String channel, String startTime, String endTime, RtspConfigBean configBean, Integer port) { String msg = StringUtils.replace("{\"ip\":\"{ip}\",\"tcpPort\":{tcpPort},\"udpPort\":{udpPort},\"channelNo\":\"{channelNo}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"playbackType\":0,\"playbackSpeed\":1,\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"clientId\":\"{sim}\",\"messageId\":37377}", "{clientId}", sim); msg = StringUtils.replace(msg, "{startTime}", startTime); msg = StringUtils.replace(msg, "{endTime}", endTime); msg = StringUtils.replace(msg, "{channelNo}", channel); msg = StringUtils.replace(msg, "{tcpPort}", (port.intValue() + getAddPort().intValue()) + ""); msg = StringUtils.replace(msg, "{udpPort}", (port.intValue() + getAddPort().intValue()) + ""); msg = StringUtils.replace(msg, "{sim}", sim); return StringUtils.replace(msg, "{ip}", configBean.getRtspIp()); } public String formatPushURL(String pushKey, int port, int httpPort) { String msg = StringUtils.replace(this.pushURL, "{pushKey}", pushKey); msg = StringUtils.replace(msg, "{port}", String.valueOf(port)); return StringUtils.replace(msg, "{httpPort}", String.valueOf(httpPort)); } public String formatStopPushURL(String pushKey, int port, int httpPort) { String msg = StringUtils.replace(this.stopPUshURL, "{pushKey}", pushKey); msg = StringUtils.replace(msg, "{port}", String.valueOf(port)); return StringUtils.replace(msg, "{httpPort}", String.valueOf(httpPort)); } public String getJt1078Url() { return this.jt1078Url; } public String getJt1078SendPort() { return this.jt1078SendPort; } public String getStopSendPort() { return this.stopSendPort; } public String getHistoryListPort() { return this.historyListPort; } public String getPlayHistoryPort() { return this.playHistoryPort; } public String getPushURL() { return this.pushURL; } public Integer getStart1078Port() { if (Objects.isNull(this.start1078Port)) this.start1078Port = Integer.valueOf(Integer.parseInt(StringUtils.substringBefore(this.portsOf1078, ","))); return this.start1078Port; } public Integer getEnd1078Port() { if (Objects.isNull(this.end1078Port)) this.end1078Port = Integer.valueOf(Integer.parseInt(StringUtils.substringAfter(this.portsOf1078, ","))); return this.end1078Port; } public String getStopPUshURL() { return this.stopPUshURL; } public String getGetURL() { return this.getURL; } public Integer getAddPort() { return this.addPort; } public String getWs() { return this.ws; } public String getWss() { return this.wss; } }
2 1 \ No newline at end of file
  2 +package com.genersoft.iot.vmp.vmanager.jt1078.platform.config; import com.genersoft.iot.vmp.vmanager.jt1078.platform.config.RtspConfigBean; import java.util.Objects; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class Jt1078ConfigBean { @Value("${tuohua.bsth.jt1078.url}") private String jt1078Url; @Value("${tuohua.bsth.jt1078.sendPort}") private String jt1078SendPort; @Value("${tuohua.bsth.jt1078.stopSendPort}") private String stopSendPort; @Value("${tuohua.bsth.jt1078.historyListPort}") private String historyListPort; @Value("${tuohua.bsth.jt1078.playHistoryPort}") private String playHistoryPort; @Value("${tuohua.bsth.jt1078.ports}") private String portsOf1078; @Value("${tuohua.bsth.jt1078.pushURL}") private String pushURL; @Value("${tuohua.bsth.jt1078.stopPushURL}") private String stopPUshURL; private Integer start1078Port; private Integer end1078Port; @Value("${tuohua.bsth.jt1078.get.url}") private String getURL; @Value("${tuohua.bsth.jt1078.addPortVal}") private Integer addPort; @Value("${tuohua.bsth.jt1078.ws}") private String ws; @Value("${tuohua.bsth.jt1078.wss}") private String wss; @Value("${tuohua.bsth.jt1078.videoURL}") private String videoURL; private static final String SEND_IO_MESSAGE_RTSP = "{ \"messageId\": 37121, \"properties\": 0, \"clientId\": \"{clientId}\", \"serialNo\": \"1\", \"ip\": \"{ip}\", \"tcpPort\": \"{tcpPort}\", \"udpPort\": \"{udpPort}\", \"channelNo\": \"{channelNo}\", \"mediaType\": \"1\", \"streamType\": \"1\"}"; private static final String SEND_IO_MESSAGE_RTSP_STOP = "{\"messageId\": 37122,\"properties\": 0,\"clientId\": \"{clientId}\",\"serialNo\": \"1\",\"channelNo\": \"{channelNo}\",\"command\": \"0\",\"closeType\": \"0\",\"streamType\": \"1\"}"; private static final String SEND_IO_HISTORY_RTSP = "{\"msgid\":37381,\"clientId\":\"{clientId}\",\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"channelId\":{channelNo}}"; private static final String SEND_IO_PLAY_RTSP = "{\"ip\":\"{ip}\",\"tcpPort\":{tcpPort},\"udpPort\":{udpPort},\"channelNo\":\"{channelNo}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"playbackType\":0,\"playbackSpeed\":1,\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"clientId\":\"{sim}\",\"messageId\":37377}"; public String formatMessageId(String sim, String channel, RtspConfigBean configBean, Integer port) { String msg = StringUtils.replace("{ \"messageId\": 37121, \"properties\": 0, \"clientId\": \"{clientId}\", \"serialNo\": \"1\", \"ip\": \"{ip}\", \"tcpPort\": \"{tcpPort}\", \"udpPort\": \"{udpPort}\", \"channelNo\": \"{channelNo}\", \"mediaType\": \"1\", \"streamType\": \"1\"}", "{clientId}", sim); msg = StringUtils.replace(msg, "{tcpPort}", (port.intValue() +getAddPort()) + ""); msg = StringUtils.replace(msg, "{udpPort}", (port.intValue() +getAddPort()) + ""); msg = StringUtils.replace(msg, "{channelNo}", channel); return StringUtils.replace(msg, "{ip}", configBean.getRtspIp()); } public String formatMessageStop(String sim, String channel) { String msg = StringUtils.replace("{\"messageId\": 37122,\"properties\": 0,\"clientId\": \"{clientId}\",\"serialNo\": \"1\",\"channelNo\": \"{channelNo}\",\"command\": \"0\",\"closeType\": \"0\",\"streamType\": \"1\"}", "{clientId}", sim); return StringUtils.replace(msg, "{channelNo}", channel); } public String formatMessageHistoryListRTSP(String sim, String channel, String startTime, String endTime) { String msg = StringUtils.replace("{\"msgid\":37381,\"clientId\":\"{clientId}\",\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"channelId\":{channelNo}}", "{clientId}", sim); msg = StringUtils.replace(msg, "{startTime}", startTime); msg = StringUtils.replace(msg, "{endTime}", endTime); return StringUtils.replace(msg, "{channelNo}", channel); } public String formatMessageHistoryPlayRTSP(String sim, String channel, String startTime, String endTime, RtspConfigBean configBean, Integer port) { String msg = StringUtils.replace("{\"ip\":\"{ip}\",\"tcpPort\":{tcpPort},\"udpPort\":{udpPort},\"channelNo\":\"{channelNo}\",\"mediaType\":0,\"streamType\":0,\"storageType\":0,\"playbackType\":0,\"playbackSpeed\":1,\"startTime\":\"{startTime}\",\"endTime\":\"{endTime}\",\"clientId\":\"{sim}\",\"messageId\":37377}", "{clientId}", sim); msg = StringUtils.replace(msg, "{startTime}", startTime); msg = StringUtils.replace(msg, "{endTime}", endTime); msg = StringUtils.replace(msg, "{channelNo}", channel); msg = StringUtils.replace(msg, "{tcpPort}", (port.intValue() +getAddPort()) + ""); msg = StringUtils.replace(msg, "{udpPort}", (port.intValue() +getAddPort()) + ""); msg = StringUtils.replace(msg, "{sim}", sim); return StringUtils.replace(msg, "{ip}", configBean.getRtspIp()); } public String formatPushURL(String pushKey, int port, int httpPort) { String msg = StringUtils.replace(this.pushURL, "{pushKey}", pushKey); msg = StringUtils.replace(msg, "{port}", String.valueOf(port)); return StringUtils.replace(msg, "{httpPort}", String.valueOf(httpPort)); } public String formatStopPushURL(String pushKey, int port, int httpPort) { String msg = StringUtils.replace(this.stopPUshURL, "{pushKey}", pushKey); msg = StringUtils.replace(msg, "{port}", String.valueOf(port)); return StringUtils.replace(msg, "{httpPort}", String.valueOf(httpPort)); } public String formatVideoURL(String stream){ return StringUtils.replace(videoURL,"{stream}",stream); } public String getJt1078Url() { return this.jt1078Url; } public String getJt1078SendPort() { return this.jt1078SendPort; } public String getStopSendPort() { return this.stopSendPort; } public String getHistoryListPort() { return this.historyListPort; } public String getPlayHistoryPort() { return this.playHistoryPort; } public String getPushURL() { return this.pushURL; } public Integer getStart1078Port() { if (Objects.isNull(this.start1078Port)) this.start1078Port = Integer.valueOf(Integer.parseInt(StringUtils.substringBefore(this.portsOf1078, ","))); return this.start1078Port; } public Integer getEnd1078Port() { if (Objects.isNull(this.end1078Port)) this.end1078Port = Integer.valueOf(Integer.parseInt(StringUtils.substringAfter(this.portsOf1078, ","))); return this.end1078Port; } public String getStopPUshURL() { return this.stopPUshURL; } public String getGetURL() { return this.getURL; } public Integer getAddPort() { return this.addPort; } public String getWs() { return this.ws; } public String getWss() { return this.wss; } public String getPortsOf1078() { return portsOf1078; } }
3 3 \ No newline at end of file
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/jt1078/platform/config/TuohuaConfigBean.java
... ... @@ -256,7 +256,7 @@ public class TuohuaConfigBean {
256 256 if (StringUtils.isEmpty(sim) || !optional.isPresent()) {
257 257 name = "<view style='color:red'>" + name + "</view>";
258 258 abnormalStatus = 10;
259   - }else if(Objects.isNull(optional.get().get("timestamp")) || now- Convert.toLong(optional.get().get("timestamp"))<=120000){
  259 + }else if(Objects.isNull(optional.get().get("timestamp")) || now- Convert.toLong(optional.get().get("timestamp"))>120000){
260 260 name = "<view style='color:#ccc'>" + name + "</view>";
261 261 abnormalStatus =20;
262 262 }else{
... ...
src/main/java/com/genersoft/iot/vmp/vmanager/jt1078/platform/handler/HttpClientUtil.java
... ... @@ -162,6 +162,37 @@ public class HttpClientUtil {
162 162 return null;
163 163 }
164 164  
  165 + public boolean doGetNoResult(String url) throws URISyntaxException, IOException {
  166 + // 创建Httpclient对象
  167 + DefaultHttpClient httpclient = getHttpClient();
  168 + // 定义请求的参数
  169 +//
  170 +// httpclient.setCookieStore(cookieStore1);
  171 +
  172 + URIBuilder uriBuilder = new URIBuilder(url);
  173 + URI uri = uriBuilder.build();
  174 +
  175 + // 创建http GET请求
  176 + HttpGet httpGet = new HttpGet(uri);
  177 +
  178 + //response 对象
  179 + CloseableHttpResponse response = null;
  180 + try {
  181 + // 执行http get请求
  182 + response = httpclient.execute(httpGet);
  183 + // 判断返回状态是否为200
  184 + if (response.getStatusLine().getStatusCode() == 200) {
  185 + return true;
  186 + }
  187 + } finally {
  188 + if (response != null) {
  189 + response.close();
  190 + }
  191 + httpclient.close();
  192 + }
  193 + return false;
  194 + }
  195 +
165 196  
166 197 @NotNull
167 198 private static HttpClientPostEntity combationReturnObj(CloseableHttpResponse response, DefaultHttpClient httpclient,String url,String requestBody) throws IOException {
... ...
src/main/resources/application-local.yml
... ... @@ -13,11 +13,11 @@ spring:
13 13 # REDIS数据库配置
14 14 redis:
15 15 # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
16   - host: 192.168.168.124
  16 + host: 192.168.169.124
17 17 # [必须修改] 端口号
18 18 port: 6379
19 19 # [可选] 数据库 DB
20   - database: 10
  20 + database: 8
21 21 # [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
22 22 # password: guzijian
23 23 # [可选] 超时时间
... ... @@ -152,7 +152,7 @@ tuohua:
152 152 historyUdpPort: 9999
153 153 ip : 61.169.120.202
154 154 jt1078:
155   - ports: 9100,9600
  155 + ports: 9000,9500
156 156 addPortVal: 30000
157 157 pushURL: http://192.169.1.92:3333/new/server/{pushKey}/{port}/{httpPort}
158 158 stopPushURL: http://192.169.1.92:3333/stop/channel/{pushKey}/{port}/{httpPort}
... ... @@ -164,6 +164,7 @@ tuohua:
164 164 ws: ws://192.168.169.100:1091/schedule/{stream}.live.flv
165 165 wss: wss://192.168.169.100:443/schedule/{stream}.live.flv
166 166 get:
  167 + #url: http://192.169.1.92:{port}/video/{stream}.flv
167 168 url: http://192.169.1.92:3333/video/{stream}.flv
168 169 playURL: /play/wasm/ws%3A%2F%2F{ip}%3A{port}%2Fschedule%2F{sim}-{channel}.live.flv%3FcallId%{publickey}
169 170  
... ...
src/main/resources/application-localDev.yml
1 1 Binary files a/src/main/resources/application-localDev.yml and b/src/main/resources/application-localDev.yml differ
... ...
web_src/config/index.js
... ... @@ -11,7 +11,7 @@ module.exports = {
11 11 assetsPublicPath: "/",
12 12 proxyTable: {
13 13 "/debug": {
14   - target: "http://118.113.164.50:18989",
  14 + target: "http://127.0.0.1:28080",
15 15 changeOrigin: true,
16 16 pathRewrite: {
17 17 "^/debug": "/",
... ...
web_src/src/components/DeviceList1078.vue
... ... @@ -24,6 +24,8 @@
24 24  
25 25 <button style="margin-left: 15px;" @click="openViewDIalog()">历史数据</button>
26 26 <button style="margin-left: 15px;" @click="OneClickPlayback()">一键播放车辆视频</button>
  27 + <button style="margin-left: 15px;" @click="closeSelectItem()">关闭选中画面流</button>
  28 + <button style="margin-left: 15px;" @click="closeSelectCarItem()">一键关闭选中车辆流</button>
27 29 </el-header>
28 30  
29 31  
... ... @@ -248,7 +250,6 @@ export default {
248 250 console.log("通知设备推流1:" + deviceId + " : " + channelId);
249 251 let idxTmp = this.playerIdx
250 252 let that = this;
251   - this.loading = true
252 253  
253 254 this.$axios({
254 255 method: 'get',
... ... @@ -402,9 +403,6 @@ export default {
402 403 sim = "";
403 404 }
404 405  
405   - console.log("abnormalStatus=====================>"+abnormalStatus);
406   -
407   -
408 406 if(abnormalStatus >= 10 && abnormalStatus < 20){
409 407 name = "<view style='color:red'>" + name + "</view>";
410 408 }else if(abnormalStatus >= 20 && abnormalStatus < 30){
... ... @@ -446,8 +444,8 @@ export default {
446 444 return;
447 445 }
448 446  
449   -
450   - this.showLoading();
  447 + this.showLoading();
  448 +
451 449 if(treeNo.type == 401 || treeNo.type == '401'){
452 450 let device = new Object();
453 451 if(this.isEmpty(treeNo.online)){
... ... @@ -459,6 +457,8 @@ export default {
459 457 this.videoUrl=[]
460 458 }
461 459  
  460 + this.closeLoading();
  461 +
462 462 let pageObj = this;
463 463  
464 464 if(!this.isEmpty(this.sim) && !this.channel && this.sim != treeNo.sim && this.channel != treeNo.id){
... ... @@ -633,12 +633,31 @@ export default {
633 633 return;
634 634 }
635 635  
636   -
  636 + this.videoUrl=[''];
  637 + this.$axios({
  638 + method: 'get',
  639 + url:`/api/jt1078/query/send/stop/io/`+sim+"/"+channel+"/"+this.stream+"/"+this.port+"/"+this.httpPort,
  640 + }).then((res) => {
  641 + console.log(res);
  642 + if(fun){
  643 + fun();
  644 + }
  645 + });
  646 + },
  647 +
  648 + sendIORequestStop1(sim,channel,fun){
  649 + if(this.isEmpty(sim) || this.isEmpty(channel)){
  650 + console.log("sim:"+sim+";channel:"+channel);
  651 + if(fun){
  652 + fun();
  653 + }
  654 + return;
  655 + }
637 656  
638 657 this.videoUrl=[''];
639 658 this.$axios({
640 659 method: 'get',
641   - url:`/api/jt1078/query/send/stop/io/`+sim+"/"+channel+"/"+this.stream+"/"+this.port+"/"+this.httpPort+"/",
  660 + url:`/api/jt1078/query/send/stop/io/`+sim+"/"+channel,
642 661 }).then((res) => {
643 662 console.log(res);
644 663 if(fun){
... ... @@ -646,6 +665,7 @@ export default {
646 665 }
647 666 });
648 667 },
  668 +
649 669 isEmpty(val){
650 670 return null == val || undefined == val || "" == val;
651 671 },
... ... @@ -771,7 +791,7 @@ export default {
771 791 }
772 792  
773 793 let pageObj = this;
774   - this.showLoading();
  794 +
775 795  
776 796 this.videoUrl =[];
777 797  
... ... @@ -780,7 +800,7 @@ export default {
780 800 method: 'get',
781 801 url: '/api/jt1078/query/send/request/io/history/' + pageObj.sim + '/' + pageObj.channel+"/"+e.target.getAttribute('startTime')+"/"+e.target.getAttribute('endTime')+"/"+e.target.getAttribute('channelMapping')
782 802 }).then(function (res) {
783   - console.log(res);
  803 +
784 804  
785 805 if (res.data && res.data.data && res.data.data.data) {
786 806 let videoUrl1;
... ... @@ -845,6 +865,17 @@ export default {
845 865 this.$message.error('请选择车辆');
846 866 return;
847 867 }
  868 +
  869 + if(this.isEmpty(this.carTreeNode.abnormalStatus)){
  870 + this.$message.error('请检查车辆状态');
  871 + return;
  872 + }
  873 +
  874 +
  875 + if(this.carTreeNode.abnormalStatus!=1){
  876 + this.$message.error('车辆设备离线,请检查设备');
  877 + return;
  878 + }
848 879 if(this.isEmpty(this.sim)){
849 880 this.$message.error('无法获取SIM卡信息,请检查设备');
850 881 return;
... ... @@ -876,6 +907,23 @@ export default {
876 907 }
877 908  
878 909 window.open(this.downloadURL,"_download");
  910 + },
  911 + closeSelectItem(){
  912 + console.log("============================>"+this.playerIdx);
  913 + this.setPlayUrl(null,this.playerIdx)
  914 + // this.videoUrl[this.playerIdx]=null;
  915 + // this.sendIORequestStop1(this.sim,this.playerIdx+1);
  916 +
  917 + },
  918 + closeSelectCarItem(){
  919 + for (let index = 0; index < 9; index++) {
  920 + this.setPlayUrl(null,index)
  921 + // this.videoUrl[this.playerIdx]=null;
  922 + this.sendIORequestStop1(this.sim,index+1);
  923 +
  924 + }
  925 +
  926 +
879 927 }
880 928 }
881 929 };
... ...
web_src/src/components/common/jessibuca.vue
... ... @@ -105,6 +105,7 @@ export default {
105 105 }
106 106 },
107 107 create() {
  108 + this.loaded = true;
108 109 let options = {
109 110 container: this.$refs.container,
110 111 autoWasm: true,
... ... @@ -114,9 +115,9 @@ export default {
114 115 decoder: "static/js/jessibuca/decoder.js",
115 116 forceNoOffscreen: false,
116 117 hasAudio: typeof (this.hasAudio) == "undefined" ? true : this.hasAudio,
117   - heartTimeout: 5,
  118 + heartTimeout: 1500000,
118 119 heartTimeoutReplay: true,
119   - heartTimeoutReplayTimes: 3,
  120 + heartTimeoutReplayTimes: -1,
120 121 hiddenAutoPause: false,
121 122 hotKey: true,
122 123 isFlv: false,
... ... @@ -125,9 +126,9 @@ export default {
125 126 isResize: false,
126 127 keepScreenOn: true,
127 128 loadingText: "请稍等, 视频加载中......",
128   - loadingTimeout: 10,
  129 + loadingTimeout: 100000,
129 130 loadingTimeoutReplay: true,
130   - loadingTimeoutReplayTimes: 3,
  131 + loadingTimeoutReplayTimes: -1,
131 132 openWebglAlignment: false,
132 133 operateBtns: {
133 134 fullscreen: false,
... ... @@ -140,7 +141,7 @@ export default {
140 141 rotate: 0,
141 142 showBandwidth: false,
142 143 supportDblclickFullscreen: false,
143   - timeout: 10,
  144 + timeout: 1000000,
144 145 useMSE: true,
145 146 useWCS: location.hostname === "localhost" || location.protocol === "https:",
146 147 useWebFullScreen: true,
... ... @@ -155,12 +156,13 @@ export default {
155 156 let _this = this;
156 157 jessibuca.on("pause", function () {
157 158 _this.playing = false;
  159 +
158 160 });
159 161 jessibuca.on("play", function () {
160 162 _this.playing = true;
161 163 });
162 164 jessibuca.on("fullscreen", function (msg) {
163   - _this.fullscreen = msg
  165 + _this.fullscreen = msg;
164 166 });
165 167 jessibuca.on("mute", function (msg) {
166 168 _this.isNotMute = !msg;
... ... @@ -181,10 +183,10 @@ export default {
181 183 console.log("Jessibuca -> videoInfo: ", msg);
182 184 });
183 185 jessibuca.on("audioInfo", function (msg) {
184   - console.log("Jessibuca -> audioInfo: ", msg);
185 186 });
186 187 jessibuca.on("error", function (msg) {
187 188 console.log("Jessibuca -> error: ", msg);
  189 + _this.play(_this.videoUrl);
188 190 });
189 191 jessibuca.on("timeout", function (msg) {
190 192 console.log("Jessibuca -> timeout: ", msg);
... ...
web_src/static/js/config.js
1   -window.baseUrl = "http://118.113.164.50:18989";
  1 +window.baseUrl = "http://127.0.0.1:28080";
2 2  
3 3 // map组件全局参数, 注释此内容可以关闭地图功能
4 4 window.mapParam = {
... ...