Commit 3a1fc63d7ac0e3f686f28cad85f50cc594292e94

Authored by 648540858
1 parent 23973449

优化ssrc释放逻辑

src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
... ... @@ -233,6 +233,15 @@ public class PlayServiceImpl implements IPlayService {
233 233 HookSubscribeForStreamChange hookSubscribe = HookSubscribeFactory.on_stream_changed("rtp", ssrcInfo.getStream(), true, "rtsp", mediaServerItem.getId());
234 234 subscribe.removeSubscribe(hookSubscribe);
235 235 }
  236 + }else {
  237 + logger.info("[点播超时] 收流超时 deviceId: {}, channelId: {},码流类型:{},端口:{}, SSRC: {}",
  238 + device.getDeviceId(), channelId, device.isSwitchPrimarySubStream() ? "辅码流" : "主码流",
  239 + ssrcInfo.getPort(), ssrcInfo.getSsrc());
  240 +
  241 + mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
  242 +
  243 + mediaServerService.closeRTPServer(mediaServerItem.getId(), ssrcInfo.getStream());
  244 + streamSession.remove(device.getDeviceId(), channelId, ssrcInfo.getStream());
236 245 }
237 246 }, userSetting.getPlayTimeout());
238 247  
... ... @@ -263,6 +272,7 @@ public class PlayServiceImpl implements IPlayService {
263 272 InviteOKHandler(eventResult, ssrcInfo, mediaServerItem, device, channelId,
264 273 timeOutTaskKey, callback, inviteInfo, InviteSessionType.PLAY);
265 274 }, (event) -> {
  275 + logger.info("[点播失败] deviceId: {}, channelId:{}, {}: {}", device.getDeviceId(), channelId, event.statusCode, event.msg);
266 276 dynamicTask.stop(timeOutTaskKey);
267 277 mediaServerService.closeRTPServer(mediaServerItem, ssrcInfo.getStream());
268 278 // 释放ssrc
... ...