StreamPushServiceImpl.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.genersoft.iot.vmp.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alibaba.fastjson.TypeReference;
  5. import com.genersoft.iot.vmp.gb28181.bean.GbStream;
  6. import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
  7. import com.genersoft.iot.vmp.media.zlm.dto.MediaItem;
  8. import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
  9. import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
  10. import com.genersoft.iot.vmp.service.IMediaServerService;
  11. import com.genersoft.iot.vmp.service.IStreamPushService;
  12. import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
  13. import com.genersoft.iot.vmp.storager.dao.GbStreamMapper;
  14. import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
  15. import com.genersoft.iot.vmp.storager.dao.StreamPushMapper;
  16. import com.github.pagehelper.PageHelper;
  17. import com.github.pagehelper.PageInfo;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import java.util.ArrayList;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. @Service
  25. public class StreamPushServiceImpl implements IStreamPushService {
  26. @Autowired
  27. private GbStreamMapper gbStreamMapper;
  28. @Autowired
  29. private StreamPushMapper streamPushMapper;
  30. @Autowired
  31. private PlatformGbStreamMapper platformGbStreamMapper;
  32. @Autowired
  33. private ZLMRESTfulUtils zlmresTfulUtils;
  34. @Autowired
  35. private IRedisCatchStorage redisCatchStorage;
  36. @Autowired
  37. private IMediaServerService mediaServerService;
  38. @Override
  39. public List<StreamPushItem> handleJSON(String jsonData, MediaServerItem mediaServerItem) {
  40. if (jsonData == null) return null;
  41. Map<String, StreamPushItem> result = new HashMap<>();
  42. List<MediaItem> mediaItems = JSON.parseObject(jsonData, new TypeReference<List<MediaItem>>() {});
  43. for (MediaItem item : mediaItems) {
  44. // 不保存国标推理以及拉流代理的流
  45. if (item.getOriginType() == 1 || item.getOriginType() == 2 || item.getOriginType() == 8) {
  46. String key = item.getApp() + "_" + item.getStream();
  47. StreamPushItem streamPushItem = result.get(key);
  48. if (streamPushItem == null) {
  49. streamPushItem = transform(item);
  50. result.put(key, streamPushItem);
  51. }
  52. }
  53. }
  54. return new ArrayList<>(result.values());
  55. }
  56. @Override
  57. public StreamPushItem transform(MediaItem item) {
  58. StreamPushItem streamPushItem = new StreamPushItem();
  59. streamPushItem.setApp(item.getApp());
  60. streamPushItem.setMediaServerId(item.getMediaServerId());
  61. streamPushItem.setStream(item.getStream());
  62. streamPushItem.setAliveSecond(item.getAliveSecond());
  63. streamPushItem.setCreateStamp(item.getCreateStamp());
  64. streamPushItem.setOriginSock(item.getOriginSock());
  65. streamPushItem.setTotalReaderCount(item.getTotalReaderCount());
  66. streamPushItem.setOriginType(item.getOriginType());
  67. streamPushItem.setOriginTypeStr(item.getOriginTypeStr());
  68. streamPushItem.setOriginUrl(item.getOriginUrl());
  69. streamPushItem.setCreateStamp(item.getCreateStamp());
  70. streamPushItem.setAliveSecond(item.getAliveSecond());
  71. streamPushItem.setStatus(true);
  72. streamPushItem.setStreamType("push");
  73. streamPushItem.setVhost(item.getVhost());
  74. return streamPushItem;
  75. }
  76. @Override
  77. public PageInfo<StreamPushItem> getPushList(Integer page, Integer count) {
  78. PageHelper.startPage(page, count);
  79. List<StreamPushItem> all = streamPushMapper.selectAll();
  80. return new PageInfo<>(all);
  81. }
  82. @Override
  83. public boolean saveToGB(GbStream stream) {
  84. stream.setStreamType("push");
  85. stream.setStatus(true);
  86. int add = gbStreamMapper.add(stream);
  87. return add > 0;
  88. }
  89. @Override
  90. public boolean removeFromGB(GbStream stream) {
  91. int del = gbStreamMapper.del(stream.getApp(), stream.getStream());
  92. MediaServerItem mediaInfo = mediaServerService.getOne(stream.getMediaServerId());
  93. JSONObject mediaList = zlmresTfulUtils.getMediaList(mediaInfo, stream.getApp(), stream.getStream());
  94. if (mediaList == null) {
  95. streamPushMapper.del(stream.getApp(), stream.getStream());
  96. }
  97. return del > 0;
  98. }
  99. @Override
  100. public StreamPushItem getPush(String app, String streamId) {
  101. return streamPushMapper.selectOne(app, streamId);
  102. }
  103. @Override
  104. public boolean stop(String app, String streamId) {
  105. StreamPushItem streamPushItem = streamPushMapper.selectOne(app, streamId);
  106. int delStream = streamPushMapper.del(app, streamId);
  107. gbStreamMapper.del(app, streamId);
  108. platformGbStreamMapper.delByAppAndStream(app, streamId);
  109. if (delStream > 0) {
  110. MediaServerItem mediaServerItem = mediaServerService.getOne(streamPushItem.getMediaServerId());
  111. zlmresTfulUtils.closeStreams(mediaServerItem,app, streamId);
  112. }
  113. return true;
  114. }
  115. }