|  | @@ -459,9 +459,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;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          logger.info("[点播开始] deviceId: {}, channelId: {},码流类型:{}, 收流端口: {}, 码流:{}, 收流模式:{}, SSRC: {}, SSRC校验:{}",
 | 
	
	
		
			
				|  | @@ -473,8 +475,9 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |              // 释放ssrc
 | 
	
		
			
				|  |  |              mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
 | 
	
		
			
				|  |  |              streamSession.remove(device.getDeviceId(), channel.getChannelId(), 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.getChannelId(), null,
 | 
	
		
			
				|  |  |                      InviteErrorCode.ERROR_FOR_RESOURCE_EXHAUSTION.getCode(), "点播端口分配异常", null);
 | 
	
		
			
				|  |  |              return;
 | 
	
	
		
			
				|  | @@ -494,8 +497,9 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |                  logger.info("[点播超时] 收流超时 deviceId: {}, channelId: {},码流:{},端口:{}, SSRC: {}",
 | 
	
		
			
				|  |  |                          device.getDeviceId(), channel.getChannelId(), 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.getChannelId(), null,
 | 
	
		
			
				|  |  |                          InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getCode(), InviteErrorCode.ERROR_FOR_STREAM_TIMEOUT.getMsg(), null);
 | 
	
		
			
				|  |  |                  inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, device.getDeviceId(), channel.getChannelId());
 | 
	
	
		
			
				|  | @@ -531,14 +535,19 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |                  // hook响应
 | 
	
		
			
				|  |  |                  StreamInfo streamInfo = onPublishHandlerForPlay(hookData.getMediaServer(), hookData.getMediaInfo(), device.getDeviceId(), channel.getChannelId());
 | 
	
		
			
				|  |  |                  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.getChannelId(), 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.getChannelId(), null,
 | 
	
		
			
				|  |  |                          InviteErrorCode.SUCCESS.getCode(),
 | 
	
		
			
				|  |  |                          InviteErrorCode.SUCCESS.getMsg(),
 | 
	
	
		
			
				|  | @@ -558,8 +567,9 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |                  mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  streamSession.remove(device.getDeviceId(), channel.getChannelId(), 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.getChannelId(), null,
 | 
	
		
			
				|  |  |                          InviteErrorCode.ERROR_FOR_RESET_SSRC.getCode(),
 | 
	
		
			
				|  |  |                          String.format("点播失败, 错误码: %s, %s", event.statusCode, event.msg), null);
 | 
	
	
		
			
				|  | @@ -575,9 +585,10 @@ public class PlayServiceImpl implements IPlayService {
 | 
	
		
			
				|  |  |              mediaServerService.releaseSsrc(mediaServerItem.getId(), ssrcInfo.getSsrc());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              streamSession.remove(device.getDeviceId(), channel.getChannelId(), ssrcInfo.getStream());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            callback.run(InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getCode(),
 | 
	
		
			
				|  |  | -                    InviteErrorCode.ERROR_FOR_SIP_SENDING_FAILED.getMsg(), 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);
 |