MediaServiceImpl.java 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.genersoft.iot.vmp.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.genersoft.iot.vmp.common.StreamInfo;
  6. import com.genersoft.iot.vmp.media.zlm.ZLMServerConfig;
  7. import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
  8. import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
  9. import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
  10. import com.genersoft.iot.vmp.service.IMediaService;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. @Service
  14. public class MediaServiceImpl implements IMediaService {
  15. @Autowired
  16. private IRedisCatchStorage redisCatchStorage;
  17. @Autowired
  18. private IVideoManagerStorager storager;
  19. @Autowired
  20. private ZLMRESTfulUtils zlmresTfulUtils;
  21. @Override
  22. public StreamInfo getStreamInfoByAppAndStream(String app, String stream, JSONArray tracks) {
  23. ZLMServerConfig mediaInfo = redisCatchStorage.getMediaInfo();
  24. StreamInfo streamInfoResult = new StreamInfo();
  25. streamInfoResult.setStreamId(stream);
  26. streamInfoResult.setApp(app);
  27. streamInfoResult.setRtmp(String.format("rtmp://%s:%s/%s/%s", mediaInfo.getIp(), mediaInfo.getRtmpPort(), app, stream));
  28. streamInfoResult.setRtsp(String.format("rtsp://%s:%s/%s/%s", mediaInfo.getIp(), mediaInfo.getRtspPort(), app, stream));
  29. streamInfoResult.setFlv(String.format("http://%s:%s/%s/%s.flv", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  30. streamInfoResult.setWs_flv(String.format("ws://%s:%s/%s/%s.flv", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  31. streamInfoResult.setHls(String.format("http://%s:%s/%s/%s/hls.m3u8", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  32. streamInfoResult.setWs_hls(String.format("ws://%s:%s/%s/%s/hls.m3u8", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  33. streamInfoResult.setFmp4(String.format("http://%s:%s/%s/%s.live.mp4", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  34. streamInfoResult.setWs_fmp4(String.format("ws://%s:%s/%s/%s.live.mp4", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  35. streamInfoResult.setTs(String.format("http://%s:%s/%s/%s.live.ts", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  36. streamInfoResult.setWs_ts(String.format("ws://%s:%s/%s/%s.live.ts", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  37. streamInfoResult.setRtc(String.format("http://%s:%s/index/api/webrtc?app=%s&stream=%s&type=play", mediaInfo.getIp(), mediaInfo.getHttpPort(), app, stream));
  38. streamInfoResult.setTracks(tracks);
  39. return streamInfoResult;
  40. }
  41. @Override
  42. public StreamInfo getStreamInfoByAppAndStreamWithCheck(String app, String stream) {
  43. StreamInfo streamInfo = null;
  44. JSONObject mediaList = zlmresTfulUtils.getMediaList(app, stream);
  45. if (mediaList != null) {
  46. if (mediaList.getInteger("code") == 0) {
  47. JSONArray data = mediaList.getJSONArray("data");
  48. if (data == null) return null;
  49. JSONObject mediaJSON = JSON.parseObject(JSON.toJSONString(data.get(0)), JSONObject.class);
  50. JSONArray tracks = mediaJSON.getJSONArray("tracks");
  51. streamInfo = getStreamInfoByAppAndStream(app, stream, tracks);
  52. }
  53. }
  54. return streamInfo;
  55. }
  56. }