[*] 调整接口

This commit is contained in:
acgist
2023-03-09 12:40:33 +08:00
parent 2a7be453f3
commit fe7bc4baf9
22 changed files with 411 additions and 77 deletions

View File

@@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.acgist.taoyao.boot.config.MediaProperties;
import com.acgist.taoyao.boot.config.WebrtcProperties;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.config.camera.CameraProperties;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
@@ -25,10 +26,12 @@ import io.swagger.v3.oas.annotations.tags.Tag;
public class ConfigController {
private final MediaProperties mediaProperties;
private final CameraProperties cameraProperties;
private final WebrtcProperties webrtcProperties;
public ConfigController(MediaProperties mediaProperties, WebrtcProperties webrtcProperties) {
public ConfigController(MediaProperties mediaProperties, CameraProperties cameraProperties, WebrtcProperties webrtcProperties) {
this.mediaProperties = mediaProperties;
this.cameraProperties = cameraProperties;
this.webrtcProperties = webrtcProperties;
}
@@ -38,6 +41,13 @@ public class ConfigController {
public Message media() {
return Message.success(this.mediaProperties);
}
@Operation(summary = "摄像头配置", description = "摄像头配置")
@GetMapping("/camera")
@ApiResponse(content = @Content(schema = @Schema(implementation = CameraProperties.class)))
private Message camera() {
return Message.success(this.cameraProperties);
}
@Operation(summary = "WebRTC配置", description = "WebRTC配置")
@GetMapping("/webrtc")

View File

@@ -7,6 +7,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.config.camera.AiProperties;
import com.acgist.taoyao.signal.model.control.PtzControl;
import com.acgist.taoyao.signal.protocol.control.ControlAiProtocol;
import com.acgist.taoyao.signal.protocol.control.ControlBellProtocol;
import com.acgist.taoyao.signal.protocol.control.ControlPhotographProtocol;
import com.acgist.taoyao.signal.protocol.control.ControlPtzProtocol;
@@ -14,6 +17,7 @@ import com.acgist.taoyao.signal.protocol.control.ControlRecordProtocol;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
/**
@@ -27,53 +31,54 @@ import jakarta.validation.constraints.NotNull;
@RequestMapping("/control")
public class ControlController {
private final ControlAiProtocol controlAiProtocol;
private final ControlPtzProtocol controlPtzProtocol;
private final ControlBellProtocol controlBellProtocol;
private final ControlRecordProtocol controlRecordProtocol;
private final ControlPhotographProtocol controlPhotographProtocol;
public ControlController(
ControlAiProtocol controlAiProtocol,
ControlPtzProtocol controlPtzProtocol,
ControlBellProtocol controlBellProtocol,
ControlRecordProtocol controlRecordProtocol,
ControlPhotographProtocol controlPhotographProtocol
) {
this.controlAiProtocol = controlAiProtocol;
this.controlPtzProtocol = controlPtzProtocol;
this.controlBellProtocol = controlBellProtocol;
this.controlRecordProtocol = controlRecordProtocol;
this.controlPhotographProtocol = controlPhotographProtocol;
}
@Operation(summary = "AI识别", description = "AI识别")
@GetMapping("/ai/{clientId}")
public Message ai(@PathVariable String clientId, @Valid AiProperties aiProperties) {
return Message.success(this.controlAiProtocol.execute(clientId, aiProperties));
}
@Operation(summary = "PTZ", description = "PTZ")
@GetMapping("/ptz/{clientId}")
public Message ptz(
@NotNull(message = "PTZ类型不能为空") ControlPtzProtocol.Type type,
@NotNull(message = "PTZ参数不能为空") Double value,
@PathVariable String clientId
) {
this.controlPtzProtocol.execute(type, value, clientId);
return Message.success();
public Message ptz(@PathVariable String clientId, @Valid PtzControl ptzControl) {
return Message.success(this.controlPtzProtocol.execute(clientId, ptzControl));
}
@Operation(summary = "响铃", description = "响铃")
@GetMapping("/bell/{clientId}")
public Message bell(@PathVariable String clientId) {
this.controlBellProtocol.execute(clientId);
return Message.success();
public Message bell(@PathVariable String clientId, @NotNull(message = "没有指定操作") Boolean active) {
return Message.success(this.controlBellProtocol.execute(clientId, active));
}
@Operation(summary = "录像", description = "录像")
@GetMapping("/record/{clientId}")
public Message record(@PathVariable String clientId) {
this.controlRecordProtocol.execute(clientId);
return Message.success();
public Message record(@PathVariable String clientId, @NotNull(message = "没有指定操作") Boolean active) {
return Message.success(this.controlRecordProtocol.execute(clientId, active));
}
@Operation(summary = "拍照", description = "拍照")
@GetMapping("/photograph/{clientId}")
public Message photograph(@PathVariable String clientId) {
this.controlPhotographProtocol.execute(clientId);
return Message.success();
return Message.success(this.controlPhotographProtocol.execute(clientId));
}
}

View File

@@ -158,6 +158,35 @@ taoyao:
port: 3478
username: taoyao
password: taoyao
# 摄像头配置
camera:
# 混音
audio-mixer: false
# 变声
audio-changer: false
# 降噪
audio-denoise: true
# 存储目录
storage-path: /data/taoyao/storage
# 图片存储目录
storage-image-path: /data/taoyao/storage/image
# 视频存储目录
storage-video-path: /data/taoyao/storage/video
# AI识别
ai:
enabled: false
type: PERSON
# 美颜
beauty:
enabled: false
level: 10
# 水印
watermark:
enabled: false
text: taoyao
posx: 10
posy: 10
opacity: 0.8
# 安全配置
security:
enabled: true