pedoc
2024-01-29 3d68b56bb5ecbc3d34b2901c671dc7f1f0f82f74
src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
old mode 100644 new mode 100755
@@ -9,6 +9,7 @@
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.conf.exception.ControllerException;
import com.genersoft.iot.vmp.conf.exception.SsrcTransactionNotFoundException;
import com.genersoft.iot.vmp.conf.security.JwtUtils;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.SsrcTransaction;
import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
@@ -30,6 +31,7 @@
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,6 +42,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.sip.InvalidArgumentException;
import javax.sip.SipException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException;
import java.util.List;
import java.util.UUID;
@@ -85,7 +89,7 @@
   @Autowired
   private UserSetting userSetting;
   @Operation(summary = "开始点播")
   @Operation(summary = "开始点播", security = @SecurityRequirement(name = JwtUtils.HEADER))
   @Parameter(name = "deviceId", description = "设备国标编号", required = true)
   @Parameter(name = "channelId", description = "通道国标编号", required = true)
   @GetMapping("/start/{deviceId}/{channelId}")
@@ -111,7 +115,7 @@
         wvpResult.setCode(ErrorCode.ERROR100.getCode());
         wvpResult.setMsg("点播超时");
         requestMessage.setData(wvpResult);
         resultHolder.invokeResult(requestMessage);
         resultHolder.invokeAllResult(requestMessage);
         inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, deviceId, channelId);
         storager.stopPlay(deviceId, channelId);
      });
@@ -128,7 +132,15 @@
            if (data != null) {
               StreamInfo streamInfo = (StreamInfo)data;
               if (userSetting.getUseSourceIpAsStreamIp()) {
                  streamInfo.channgeStreamIp(request.getLocalAddr());
                  streamInfo=streamInfo.clone();//深拷贝
                  String host;
                  try {
                     URL url=new URL(request.getRequestURL().toString());
                     host=url.getHost();
                  } catch (MalformedURLException e) {
                     host=request.getLocalAddr();
                  }
                  streamInfo.channgeStreamIp(host);
               }
               wvpResult.setData(new StreamContent(streamInfo));
            }
@@ -142,7 +154,7 @@
      return result;
   }
   @Operation(summary = "停止点播")
   @Operation(summary = "停止点播", security = @SecurityRequirement(name = JwtUtils.HEADER))
   @Parameter(name = "deviceId", description = "设备国标编号", required = true)
   @Parameter(name = "channelId", description = "通道国标编号", required = true)
   @Parameter(name = "isSubStream", description = "是否子码流(true-子码流,false-主码流),默认为false", required = true)
@@ -166,7 +178,7 @@
      }
      if (InviteSessionStatus.ok == inviteInfo.getStatus()) {
         try {
            logger.warn("[停止点播] {}/{}", device.getDeviceId(), channelId);
            logger.info("[停止点播] {}/{}", device.getDeviceId(), channelId);
            cmder.streamByeCmd(device, channelId, inviteInfo.getStream(), null, null);
         } catch (InvalidArgumentException | SipException | ParseException | SsrcTransactionNotFoundException e) {
            logger.error("[命令发送失败] 停止点播, 发送BYE: {}", e.getMessage());
@@ -187,7 +199,7 @@
    * 将不是h264的视频通过ffmpeg 转码为h264 + aac
    * @param streamId 流ID
    */
   @Operation(summary = "将不是h264的视频通过ffmpeg 转码为h264 + aac")
   @Operation(summary = "将不是h264的视频通过ffmpeg 转码为h264 + aac", security = @SecurityRequirement(name = JwtUtils.HEADER))
   @Parameter(name = "streamId", description = "视频流ID", required = true)
   @PostMapping("/convert/{streamId}")
   public JSONObject playConvert(@PathVariable String streamId) {
@@ -229,7 +241,7 @@
   /**
    * 结束转码
    */
   @Operation(summary = "结束转码")
   @Operation(summary = "结束转码", security = @SecurityRequirement(name = JwtUtils.HEADER))
   @Parameter(name = "key", description = "视频流key", required = true)
   @Parameter(name = "mediaServerId", description = "流媒体服务ID", required = true)
   @PostMapping("/convertStop/{key}")
@@ -254,7 +266,7 @@
      }
   }
   @Operation(summary = "语音广播命令")
   @Operation(summary = "语音广播命令", security = @SecurityRequirement(name = JwtUtils.HEADER))
   @Parameter(name = "deviceId", description = "设备国标编号", required = true)
    @GetMapping("/broadcast/{deviceId}")
    @PostMapping("/broadcast/{deviceId}")
@@ -320,7 +332,7 @@
      return result;
   }
   @Operation(summary = "获取所有的ssrc")
   @Operation(summary = "获取所有的ssrc", security = @SecurityRequirement(name = JwtUtils.HEADER))
   @GetMapping("/ssrc")
   public JSONObject getSSRC() {
      if (logger.isDebugEnabled()) {
@@ -343,7 +355,7 @@
      return jsonObject;
   }
   @Operation(summary = "获取截图")
   @Operation(summary = "获取截图", security = @SecurityRequirement(name = JwtUtils.HEADER))
   @Parameter(name = "deviceId", description = "设备国标编号", required = true)
   @Parameter(name = "channelId", description = "通道国标编号", required = true)
   @Parameter(name = "isSubStream", description = "是否子码流(true-子码流,false-主码流),默认为false", required = true)