Commit ca79100b6fae7b1963d1653227d67345893a0672

Authored by 648540858
1 parent b2c953fc

优化失败的录像点播的ssrc释放逻辑

src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -348,6 +348,7 @@ public class PlayServiceImpl implements IPlayService { @@ -348,6 +348,7 @@ public class PlayServiceImpl implements IPlayService {
348 msg.setId(uuid); 348 msg.setId(uuid);
349 msg.setKey(key); 349 msg.setKey(key);
350 PlayBackResult<RequestMessage> playBackResult = new PlayBackResult<>(); 350 PlayBackResult<RequestMessage> playBackResult = new PlayBackResult<>();
  351 +
351 Timer timer = new Timer(); 352 Timer timer = new Timer();
352 timer.schedule(new TimerTask() { 353 timer.schedule(new TimerTask() {
353 @Override 354 @Override
@@ -356,7 +357,16 @@ public class PlayServiceImpl implements IPlayService { @@ -356,7 +357,16 @@ public class PlayServiceImpl implements IPlayService {
356 playBackResult.setCode(-1); 357 playBackResult.setCode(-1);
357 playBackResult.setData(msg); 358 playBackResult.setData(msg);
358 callback.call(playBackResult); 359 callback.call(playBackResult);
  360 + SIPDialog dialog = streamSession.getDialogByStream(deviceId, channelId, ssrcInfo.getStream());
359 // 点播超时回复BYE 同时释放ssrc以及此次点播的资源 361 // 点播超时回复BYE 同时释放ssrc以及此次点播的资源
  362 + if (dialog != null) {
  363 + // 点播超时回复BYE 同时释放ssrc以及此次点播的资源
  364 + cmder.streamByeCmd(device.getDeviceId(), channelId, ssrcInfo.getStream());
  365 + }else {
  366 + mediaServerService.releaseSsrc(newMediaServerItem.getId(), ssrcInfo.getSsrc());
  367 + mediaServerService.closeRTPServer(deviceId, channelId, ssrcInfo.getStream());
  368 + streamSession.remove(deviceId, channelId, ssrcInfo.getStream());
  369 + }
360 cmder.streamByeCmd(device.getDeviceId(), channelId, ssrcInfo.getStream()); 370 cmder.streamByeCmd(device.getDeviceId(), channelId, ssrcInfo.getStream());
361 // 回复之前所有的点播请求 371 // 回复之前所有的点播请求
362 callback.call(playBackResult); 372 callback.call(playBackResult);