old mode 100644
new mode 100755
 |  |  | 
 |  |  | import com.genersoft.iot.vmp.conf.DynamicTask; | 
 |  |  | import com.genersoft.iot.vmp.conf.UserSetting; | 
 |  |  | import com.genersoft.iot.vmp.conf.exception.ControllerException; | 
 |  |  | import com.genersoft.iot.vmp.conf.security.JwtUtils; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.SendRtpPortManager; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.ZLMServerFactory; | 
 |  |  | import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe; | 
 |  |  | 
 |  |  | import com.genersoft.iot.vmp.vmanager.bean.OtherPsSendInfo; | 
 |  |  | import io.swagger.v3.oas.annotations.Operation; | 
 |  |  | import io.swagger.v3.oas.annotations.Parameter; | 
 |  |  | import io.swagger.v3.oas.annotations.security.SecurityRequirement; | 
 |  |  | import io.swagger.v3.oas.annotations.tags.Tag; | 
 |  |  | import okhttp3.OkHttpClient; | 
 |  |  | import okhttp3.Request; | 
 |  |  | 
 |  |  |  | 
 |  |  |     @GetMapping(value = "/receive/open") | 
 |  |  |     @ResponseBody | 
 |  |  |     @Operation(summary = "开启收流和获取发流信息") | 
 |  |  |     @Operation(summary = "开启收流和获取发流信息", security = @SecurityRequirement(name = JwtUtils.HEADER)) | 
 |  |  |     @Parameter(name = "isSend", description = "是否发送,false时只开启收流, true同时返回推流信息", required = true) | 
 |  |  |     @Parameter(name = "callId", description = "整个过程的唯一标识,为了与后续接口关联", required = true) | 
 |  |  |     @Parameter(name = "ssrc", description = "来源流的SSRC,不传则不校验来源ssrc", required = false) | 
 |  |  | 
 |  |  |         if (isSend != null && isSend && callId == null) { | 
 |  |  |             throw new ControllerException(ErrorCode.ERROR100.getCode(),"isSend为true时,CallID不能为空"); | 
 |  |  |         } | 
 |  |  |         int ssrcInt = 0; | 
 |  |  |         long ssrcInt = 0; | 
 |  |  |         if (ssrc != null) { | 
 |  |  |             try { | 
 |  |  |                 ssrcInt = Integer.parseInt(ssrc); | 
 |  |  |                 ssrcInt = Long.parseLong(ssrc); | 
 |  |  |             }catch (NumberFormatException e) { | 
 |  |  |                 throw new ControllerException(ErrorCode.ERROR100.getCode(),"ssrc格式错误"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         String receiveKey = VideoManagerConstants.WVP_OTHER_RECEIVE_PS_INFO + userSetting.getServerId() + "_" + callId + "_"  + stream; | 
 |  |  |         int localPort = zlmServerFactory.createRTPServer(mediaServerItem, stream, ssrcInt, null, false, tcpMode); | 
 |  |  |         int localPort = zlmServerFactory.createRTPServer(mediaServerItem, stream, ssrcInt, null, false, false, tcpMode); | 
 |  |  |         if (localPort == 0) { | 
 |  |  |             throw new ControllerException(ErrorCode.ERROR100.getCode(), "获取端口失败"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |  | 
 |  |  |     @GetMapping(value = "/receive/close") | 
 |  |  |     @ResponseBody | 
 |  |  |     @Operation(summary = "关闭收流") | 
 |  |  |     @Operation(summary = "关闭收流", security = @SecurityRequirement(name = JwtUtils.HEADER)) | 
 |  |  |     @Parameter(name = "stream", description = "流的ID", required = true) | 
 |  |  |     public void closeRtpServer(String stream) { | 
 |  |  |         logger.info("[第三方PS服务对接->关闭收流] stream->{}", stream); | 
 |  |  | 
 |  |  |  | 
 |  |  |     @GetMapping(value = "/send/start") | 
 |  |  |     @ResponseBody | 
 |  |  |     @Operation(summary = "发送流") | 
 |  |  |     @Operation(summary = "发送流", security = @SecurityRequirement(name = JwtUtils.HEADER)) | 
 |  |  |     @Parameter(name = "ssrc", description = "发送流的SSRC", required = true) | 
 |  |  |     @Parameter(name = "dstIp", description = "目标收流IP", required = true) | 
 |  |  |     @Parameter(name = "dstPort", description = "目标收流端口", required = true) | 
 |  |  | 
 |  |  |         String is_Udp = isUdp ? "1" : "0"; | 
 |  |  |         param.put("is_udp", is_Udp); | 
 |  |  |         param.put("src_port", sendInfo.getSendLocalPort()); | 
 |  |  |         param.put("use_ps", "0"); | 
 |  |  |         param.put("only_audio", "1"); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         Boolean streamReady = zlmServerFactory.isStreamReady(mediaServerItem, app, stream); |