|  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.conf.UserSetting; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.GbStream; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.media.zlm.dto.*; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.service.IMediaServerService; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.service.IStreamProxyService; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.service.IStreamPushService; | 
|---|
|  |  |  | 
|---|
|  |  |  | private UserSetting userSetting; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ZLMRTPServerFactory zlmrtpServerFactory; | 
|---|
|  |  |  | private ZLMServerFactory zlmServerFactory; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private IMediaServerService mediaServerService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Map<String, ChannelOnlineEvent> channelOnPublishEvents = new ConcurrentHashMap<>(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public StreamPushItem addPush(MediaItem mediaItem) { | 
|---|
|  |  |  | StreamPushItem transform = streamPushService.transform(mediaItem); | 
|---|
|  |  |  | StreamPushItem pushInDb = streamPushService.getPush(mediaItem.getApp(), mediaItem.getStream()); | 
|---|
|  |  |  | transform.setPushIng(mediaItem.isRegist()); | 
|---|
|  |  |  | public StreamPushItem addPush(OnStreamChangedHookParam onStreamChangedHookParam) { | 
|---|
|  |  |  | StreamPushItem transform = streamPushService.transform(onStreamChangedHookParam); | 
|---|
|  |  |  | StreamPushItem pushInDb = streamPushService.getPush(onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream()); | 
|---|
|  |  |  | transform.setPushIng(onStreamChangedHookParam.isRegist()); | 
|---|
|  |  |  | transform.setUpdateTime(DateUtil.getNow()); | 
|---|
|  |  |  | transform.setPushTime(DateUtil.getNow()); | 
|---|
|  |  |  | transform.setSelf(userSetting.getServerId().equals(mediaItem.getSeverId())); | 
|---|
|  |  |  | transform.setSelf(userSetting.getServerId().equals(onStreamChangedHookParam.getSeverId())); | 
|---|
|  |  |  | if (pushInDb == null) { | 
|---|
|  |  |  | transform.setCreateTime(DateUtil.getNow()); | 
|---|
|  |  |  | streamPushMapper.add(transform); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | streamPushMapper.update(transform); | 
|---|
|  |  |  | gbStreamMapper.updateMediaServer(mediaItem.getApp(), mediaItem.getStream(), mediaItem.getMediaServerId()); | 
|---|
|  |  |  | gbStreamMapper.updateMediaServer(onStreamChangedHookParam.getApp(), onStreamChangedHookParam.getStream(), onStreamChangedHookParam.getMediaServerId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ChannelOnlineEvent channelOnlineEventLister = getChannelOnlineEventLister(transform.getApp(), transform.getStream()); | 
|---|
|  |  |  | if ( channelOnlineEventLister != null)  { | 
|---|
|  |  |  | 
|---|
|  |  |  | public void sendStreamEvent(String app, String stream, String mediaServerId) { | 
|---|
|  |  |  | MediaServerItem mediaServerItem = mediaServerService.getOne(mediaServerId); | 
|---|
|  |  |  | // 查看推流状态 | 
|---|
|  |  |  | if (zlmrtpServerFactory.isStreamReady(mediaServerItem, app, stream)) { | 
|---|
|  |  |  | Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, app, stream); | 
|---|
|  |  |  | if (streamReady != null && streamReady) { | 
|---|
|  |  |  | ChannelOnlineEvent channelOnlineEventLister = getChannelOnlineEventLister(app, stream); | 
|---|
|  |  |  | if (channelOnlineEventLister != null)  { | 
|---|
|  |  |  | try { | 
|---|