|  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSONObject; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.common.StreamInfo; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.conf.MediaServerConfig; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.IVideoManagerStorager; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.vmanager.play.PlayController; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.vmanager.service.IPlayService; | 
|---|
|  |  |  | 
|---|
|  |  |  | private IVideoManagerStorager storager; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private IRedisCatchStorage redisCatchStorage; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DeferredResultHolder resultHolder; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | msg.setId(DeferredResultHolder.CALLBACK_CMD_PlAY + uuid); | 
|---|
|  |  |  | StreamInfo streamInfo = onPublishHandler(resonse, deviceId, channelId, uuid); | 
|---|
|  |  |  | if (streamInfo != null) { | 
|---|
|  |  |  | storager.startPlay(streamInfo); | 
|---|
|  |  |  | DeviceChannel deviceChannel = storager.queryChannel(deviceId, channelId); | 
|---|
|  |  |  | if (deviceChannel != null) { | 
|---|
|  |  |  | deviceChannel.setStreamId(streamInfo.getStreamId()); | 
|---|
|  |  |  | storager.startPlay(deviceId, channelId, streamInfo.getStreamId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | redisCatchStorage.startPlay(streamInfo); | 
|---|
|  |  |  | msg.setData(JSON.toJSONString(streamInfo)); | 
|---|
|  |  |  | resultHolder.invokeResult(msg); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 
|---|
|  |  |  | msg.setId(DeferredResultHolder.CALLBACK_CMD_PlAY + uuid); | 
|---|
|  |  |  | StreamInfo streamInfo = onPublishHandler(resonse, deviceId, channelId, uuid); | 
|---|
|  |  |  | if (streamInfo != null) { | 
|---|
|  |  |  | storager.startPlayback(streamInfo); | 
|---|
|  |  |  | redisCatchStorage.startPlayback(streamInfo); | 
|---|
|  |  |  | msg.setData(JSON.toJSONString(streamInfo)); | 
|---|
|  |  |  | resultHolder.invokeResult(msg); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 
|---|
|  |  |  | StreamInfo streamInfo = new StreamInfo(); | 
|---|
|  |  |  | streamInfo.setStreamId(streamId); | 
|---|
|  |  |  | streamInfo.setDeviceID(deviceId); | 
|---|
|  |  |  | streamInfo.setCahnnelId(channelId); | 
|---|
|  |  |  | MediaServerConfig mediaServerConfig = storager.getMediaInfo(); | 
|---|
|  |  |  | streamInfo.setChannelId(channelId); | 
|---|
|  |  |  | MediaServerConfig mediaServerConfig = redisCatchStorage.getMediaInfo(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | streamInfo.setFlv(String.format("http://%s:%s/rtp/%s.flv", mediaServerConfig.getWanIp(), mediaServerConfig.getHttpPort(), streamId)); | 
|---|
|  |  |  | streamInfo.setWs_flv(String.format("ws://%s:%s/rtp/%s.flv", mediaServerConfig.getWanIp(), mediaServerConfig.getHttpPort(), streamId)); | 
|---|