|  | @@ -461,9 +461,11 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |                       ErrorCallback<Object> callback) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          if (mediaServerItem == null || ssrcInfo == null) {
 | 
	
		
			
				|  |  | -            callback.run(InviteErrorCode.ERROR_FOR_PARAMETER_ERROR.getCode(),
 | 
	
		
			
				|  |  | -                    InviteErrorCode.ERROR_FOR_PARAMETER_ERROR.getMsg(),
 | 
	
		
			
				|  |  | -                    null);
 | 
	
		
			
				|  |  | +            if (callback != null) {
 | 
	
		
			
				|  |  | +                callback.run(InviteErrorCode.ERROR_FOR_PARAMETER_ERROR.getCode(),
 | 
	
		
			
				|  |  | +                        InviteErrorCode.ERROR_FOR_PARAMETER_ERROR.getMsg(),
 | 
	
		
			
				|  |  | +                        null);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              return;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          log.info("[点播开始] deviceId: {}, channelId: {},码流类型:{}, 收流端口: {}, 码流:{}, 收流模式:{}, SSRC: {}, SSRC校验:{}",
 | 
	
	
		
			
				|  | @@ -475,8 +477,9 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |              // 释放ssrc
 | 
	
		
			
				|  |  |              mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
 | 
	
		
			
				|  |  |              streamSession.remove(device.getDeviceId(), channel.getDeviceId(), ssrcInfo.getStream());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            callback.run(InviteErrorCode.ERROR_FOR_RESOURCE_EXHAUSTION.getCode(), "点播端口分配异常", null);
 | 
	
		
			
				|  |  | +            if (callback != null) {
 | 
	
		
			
				|  |  | +                callback.run(InviteErrorCode.ERROR_FOR_RESOURCE_EXHAUSTION.getCode(), "点播端口分配异常", null);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channel.getDeviceId(), null,
 | 
	
		
			
				|  |  |                      InviteErrorCode.ERROR_FOR_RESOURCE_EXHAUSTION.getCode(), "点播端口分配异常", null);
 | 
	
		
			
				|  |  |              return;
 | 
	
	
		
			
				|  | @@ -496,8 +499,9 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |                  log.info("[点播超时] 收流超时 deviceId: {}, channelId: {},码流:{},端口:{}, SSRC: {}",
 | 
	
		
			
				|  |  |                          device.getDeviceId(), channel.getDeviceId(), channel.getStreamIdentification(),
 | 
	
		
			
				|  |  |                          ssrcInfo.getPort(), ssrcInfo.getSsrc());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                callback.run(InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getCode(), InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getMsg(), null);
 | 
	
		
			
				|  |  | +                if (callback != null) {
 | 
	
		
			
				|  |  | +                    callback.run(InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getCode(), InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getMsg(), null);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channel.getDeviceId(), null,
 | 
	
		
			
				|  |  |                          InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getCode(), InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getMsg(), null);
 | 
	
		
			
				|  |  |                  inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, device.getDeviceId(), channel.getDeviceId());
 | 
	
	
		
			
				|  | @@ -533,14 +537,19 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |                  // hook响应
 | 
	
		
			
				|  |  |                  StreamInfo streamInfo = onPublishHandlerForPlay(hookData.getMediaServer(), hookData.getMediaInfo(), device.getDeviceId(), channel.getDeviceId());
 | 
	
		
			
				|  |  |                  if (streamInfo == null){
 | 
	
		
			
				|  |  | -                    callback.run(InviteErrorCode.ERROR_FOR_STREAM_PARSING_EXCEPTIONS.getCode(),
 | 
	
		
			
				|  |  | -                            InviteErrorCode.ERROR_FOR_STREAM_PARSING_EXCEPTIONS.getMsg(), null);
 | 
	
		
			
				|  |  | +                    if (callback != null) {
 | 
	
		
			
				|  |  | +                        callback.run(InviteErrorCode.ERROR_FOR_STREAM_PARSING_EXCEPTIONS.getCode(),
 | 
	
		
			
				|  |  | +                                InviteErrorCode.ERROR_FOR_STREAM_PARSING_EXCEPTIONS.getMsg(), null);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                      inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channel.getDeviceId(), null,
 | 
	
		
			
				|  |  |                              InviteErrorCode.ERROR_FOR_STREAM_PARSING_EXCEPTIONS.getCode(),
 | 
	
		
			
				|  |  |                              InviteErrorCode.ERROR_FOR_STREAM_PARSING_EXCEPTIONS.getMsg(), null);
 | 
	
		
			
				|  |  |                      return;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                callback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
 | 
	
		
			
				|  |  | +                if (callback != null) {
 | 
	
		
			
				|  |  | +                    callback.run(InviteErrorCode.SUCCESS.getCode(), InviteErrorCode.SUCCESS.getMsg(), streamInfo);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channel.getDeviceId(), null,
 | 
	
		
			
				|  |  |                          InviteErrorCode.SUCCESS.getCode(),
 | 
	
		
			
				|  |  |                          InviteErrorCode.SUCCESS.getMsg(),
 | 
	
	
		
			
				|  | @@ -560,8 +569,9 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |                  mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  streamSession.remove(device.getDeviceId(), channel.getDeviceId(), ssrcInfo.getStream());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                callback.run(event.statusCode, event.msg, null);
 | 
	
		
			
				|  |  | +                if (callback != null) {
 | 
	
		
			
				|  |  | +                    callback.run(event.statusCode, event.msg, null);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channel.getDeviceId(), null,
 | 
	
		
			
				|  |  |                          InviteErrorCode.ERROR_FOR_RESET_SSRC.getCode(),
 | 
	
		
			
				|  |  |                          String.format("点播失败, 错误码: %s, %s", event.statusCode, event.msg), null);
 | 
	
	
		
			
				|  | @@ -577,10 +587,11 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |              mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              streamSession.remove(device.getDeviceId(), channel.getDeviceId(), ssrcInfo.getStream());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            callback.run(InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getCode(),
 | 
	
		
			
				|  |  | -                    InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getMsg(), null);
 | 
	
		
			
				|  |  | -            inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channel.getDeviceId(), null,
 | 
	
		
			
				|  |  | +            if (callback != null) {
 | 
	
		
			
				|  |  | +                callback.run(InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getCode(),
 | 
	
		
			
				|  |  | +                        InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getMsg(), null);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            inviteStreamService.call(InviteSessionType.PLAY, device.getDeviceId(), channel.getChannelId(), null,
 | 
	
		
			
				|  |  |                      InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getCode(),
 | 
	
		
			
				|  |  |                      InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getMsg(), null);
 | 
	
		
			
				|  |  |  
 |