package com.ard.web.controller.sample;
|
|
import com.ard.common.core.domain.entity.SysUser;
|
import com.ard.common.utils.SecurityUtils;
|
import com.ard.sample.common.model.ResponseResult;
|
import com.ard.sample.component.mqtt.model.ChannelName;
|
import com.ard.sample.component.websocket.handler.LiveStreamHandler;
|
import com.ard.sample.manage.model.dto.CapacityDeviceDTO;
|
import com.ard.sample.manage.model.dto.LiveTypeDTO;
|
import com.ard.sample.manage.model.param.RemoteDebugParam;
|
import com.ard.sample.manage.model.receiver.LiveCapacityReceiver;
|
import com.ard.sample.manage.model.receiver.LiveStatusTwoReceiver;
|
import com.ard.sample.manage.service.IDeviceService;
|
import com.ard.sample.manage.service.ILiveStreamService;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.integration.annotation.ServiceActivator;
|
import org.springframework.messaging.MessageHeaders;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.List;
|
|
/**
|
* @author sean.zhou
|
* @version 0.1
|
* @date 2021/11/19
|
*/
|
|
@Api(tags = "直播功能")
|
@RestController
|
@Slf4j
|
@RequestMapping("/dock/live")
|
public class LiveStreamController {
|
|
@Autowired
|
private ILiveStreamService liveStreamService;
|
|
@Autowired
|
private LiveStreamHandler _liveStreamHandler;
|
|
@Autowired
|
private ObjectMapper mapper;
|
|
/**
|
* Analyze the live streaming capabilities of drones.
|
* This data is necessary if drones are required for live streaming.
|
*
|
* @param liveCapacity the capacity of drone and dock
|
*/
|
@ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_CAPACITY)
|
public void stateCapacity(LiveCapacityReceiver liveCapacity, MessageHeaders headers) {
|
liveStreamService.saveLiveCapacity(liveCapacity, headers.getTimestamp());
|
}
|
|
|
/**
|
* 处理摄像头返回状态
|
* */
|
@ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_STATUS)
|
public void LiveStateStatus(LiveStatusTwoReceiver liveReceiver, MessageHeaders headers) {
|
log.info("摄像头返回状态通道INBOUND_STATE_STATUS:{}", liveReceiver);
|
}
|
|
/**
|
* Get live capability data of all drones in the current user's workspace from the database.
|
*
|
* @param request
|
* @return live capability
|
*/
|
@ApiOperation(value = "获取直播能力数据", notes = "获取当前用户工作空间下所有无人机的直播能力数据")
|
// @PreAuthorize("@ss.hasPermi('dock:live:capacity')")
|
@GetMapping("/capacity")
|
public ResponseResult<List<CapacityDeviceDTO>> getLiveCapacity(HttpServletRequest request) {
|
// Get information about the current user.
|
List<CapacityDeviceDTO> liveCapacity = liveStreamService.getLiveCapacity();
|
|
return ResponseResult.success(liveCapacity);
|
}
|
|
@ApiOperation("获取video_id")
|
@PostMapping("/videoid/{sn}")
|
public ResponseResult<LiveTypeDTO> getVideoId(@PathVariable String sn) {
|
LiveTypeDTO liveTypeDTO = new LiveTypeDTO();
|
try{
|
liveTypeDTO = _liveStreamHandler.getLiveParam(sn);
|
|
}
|
catch (Exception e){
|
// videoId = e.getMessage();
|
e.printStackTrace();
|
}
|
return ResponseResult.success(liveTypeDTO);
|
}
|
|
/**
|
* Live streaming according to the parameters passed in from the web side.
|
*
|
* @param liveParam Live streaming parameters.
|
* @return
|
*/
|
@ApiOperation(value = "开始直播", notes = "根据前端传入的参数开始直播")
|
// @PreAuthorize("@ss.hasPermi('dock:live:start')")
|
@PostMapping("/streams/start")
|
public ResponseResult liveStart(@RequestBody LiveTypeDTO liveParam) {
|
return liveStreamService.liveStart(liveParam);
|
}
|
|
/**
|
* Stop live streaming according to the parameters passed in from the web side.
|
*
|
* @param liveParam Live streaming parameters.
|
* @return
|
*/
|
@ApiOperation(value = "停止直播", notes = "根据前端传入的参数停止直播")
|
// @PreAuthorize("@ss.hasPermi('dock:live:stop')")
|
@PostMapping("/streams/stop")
|
public ResponseResult liveStop(@RequestBody LiveTypeDTO liveParam) {
|
return liveStreamService.liveStop(liveParam.getVideoId());
|
}
|
|
/**
|
* Set the quality of the live streaming according to the parameters passed in from the web side.
|
*
|
* @param liveParam Live streaming parameters.
|
* @return
|
*/
|
@ApiOperation(value = "设置直播质量", notes = "根据前端传入的参数设置直播质量")
|
// @PreAuthorize("@ss.hasPermi('dock:live:quality')")
|
@PostMapping("/quality/switch")
|
public ResponseResult liveSetQuality(@RequestBody LiveTypeDTO liveParam) {
|
return liveStreamService.liveSetQuality(liveParam);
|
}
|
|
@ApiOperation(value = "切换镜头", notes = "根据前端传入的参数切换镜头")
|
// @PreAuthorize("@ss.hasPermi('dock:live:lens')")
|
@PostMapping("/lens/switch")
|
public ResponseResult liveLensChange(@RequestBody LiveTypeDTO liveParam) {
|
return liveStreamService.liveLensChange(liveParam);
|
}
|
|
@ApiOperation(value = "机场直播相机切换", notes = "根据前端传入的参数切换相机")
|
// @PreAuthorize("@ss.hasPermi('dock:live:camera')")
|
@PostMapping("/camera/switch")
|
public ResponseResult liveCameraChange(@RequestBody LiveTypeDTO liveParam) {
|
return liveStreamService.liveCameraChange(liveParam);
|
}
|
|
}
|