| | |
| | | import com.genersoft.iot.vmp.common.InviteSessionStatus; |
| | | import com.genersoft.iot.vmp.common.InviteSessionType; |
| | | import com.genersoft.iot.vmp.common.VideoManagerConstants; |
| | | import com.genersoft.iot.vmp.media.event.MediaArrivalEvent; |
| | | import com.genersoft.iot.vmp.media.event.MediaDepartureEvent; |
| | | import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent; |
| | | import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent; |
| | | import com.genersoft.iot.vmp.service.IInviteStreamService; |
| | | import com.genersoft.iot.vmp.service.bean.ErrorCallback; |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; |
| | |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.CopyOnWriteArrayList; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | @Service |
| | | @DS("master") |
| | |
| | | @Async("taskExecutor") |
| | | @org.springframework.context.event.EventListener |
| | | public void onApplicationEvent(MediaArrivalEvent event) { |
| | | if ("rtsp".equals(event.getSchema()) && "rtp".equals(event.getApp())) { |
| | | |
| | | } |
| | | // if ("rtsp".equals(event.getSchema()) && "rtp".equals(event.getApp())) { |
| | | // |
| | | // } |
| | | } |
| | | |
| | | /** |
| | |
| | | InviteInfo inviteInfo = getInviteInfoByStream(null, event.getStream()); |
| | | if (inviteInfo != null && (inviteInfo.getType() == InviteSessionType.PLAY || inviteInfo.getType() == InviteSessionType.PLAYBACK)) { |
| | | removeInviteInfo(inviteInfo); |
| | | stopPlay(inviteInfo.getDeviceId(), inviteInfo.getChannelId()); |
| | | storage.stopPlay(inviteInfo.getDeviceId(), inviteInfo.getChannelId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void updateInviteInfo(InviteInfo inviteInfo) { |
| | | updateInviteInfo(inviteInfo, null); |
| | | } |
| | | |
| | | @Override |
| | | public void updateInviteInfo(InviteInfo inviteInfo, Long time) { |
| | | if (inviteInfo == null || (inviteInfo.getDeviceId() == null || inviteInfo.getChannelId() == null)) { |
| | | logger.warn("[更新Invite信息],参数不全: {}", JSON.toJSON(inviteInfo)); |
| | | return; |
| | |
| | | ":" + inviteInfoForUpdate.getChannelId() + |
| | | ":" + inviteInfoForUpdate.getStream()+ |
| | | ":" + inviteInfoForUpdate.getSsrcInfo().getSsrc(); |
| | | redisTemplate.opsForValue().set(key, inviteInfoForUpdate); |
| | | if (time != null && time > 0) { |
| | | redisTemplate.opsForValue().set(key, inviteInfoForUpdate, time, TimeUnit.SECONDS); |
| | | }else { |
| | | redisTemplate.opsForValue().set(key, inviteInfoForUpdate); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | String keyStr = (String) keyObj; |
| | | InviteInfo inviteInfo = (InviteInfo) redisTemplate.opsForValue().get(keyStr); |
| | | if (inviteInfo != null && inviteInfo.getStreamInfo() != null && inviteInfo.getStreamInfo().getMediaServerId().equals(mediaServerId)) { |
| | | if (inviteInfo.getType().equals(InviteSessionType.DOWNLOAD) && inviteInfo.getStreamInfo().getProgress() == 1) { |
| | | continue; |
| | | } |
| | | count++; |
| | | } |
| | | } |