调整 音频合成, 头衔监测
This commit is contained in:
@@ -106,7 +106,7 @@ public class FaceDetectController {
|
||||
try {
|
||||
log.info("开始处理头衔上传,文件名: {}, 大小: {} bytes, 用户ID: {}",
|
||||
file.getOriginalFilename(), file.getSize(), userId);
|
||||
expiresInSeconds = 30*24*3600; // 默认30天
|
||||
expiresInSeconds = 7*24*3600; // 默认7天
|
||||
// 1. 验证文件
|
||||
if (file.isEmpty()) {
|
||||
result.put("success", false);
|
||||
@@ -167,12 +167,7 @@ public class FaceDetectController {
|
||||
result.put("avatarName", avatarName);
|
||||
|
||||
// 人脸检测结果
|
||||
result.put("faceDetection", Map.of(
|
||||
"success", detectLog.getSuccess(),
|
||||
"faceCount", detectLog.getFaceCount(),
|
||||
"processingTimeMs", detectLog.getProcessingTimeMs(),
|
||||
"requestId", detectLog.getRequestId()
|
||||
));
|
||||
result.put("faceDetection", detectLog.toString());
|
||||
|
||||
if (!detectLog.getSuccess()) {
|
||||
result.put("faceDetectionError", detectLog.getErrorMessage());
|
||||
@@ -225,12 +220,18 @@ public class FaceDetectController {
|
||||
@Parameter(description = "开始时间")
|
||||
@RequestParam(required = false) String startTime,
|
||||
@Parameter(description = "结束时间")
|
||||
@RequestParam(required = false) String endTime) {
|
||||
@RequestParam(required = false) String endTime,
|
||||
@Parameter(description = "所有人姓名")
|
||||
@RequestParam(required = false) String ownerName,
|
||||
@Parameter(description = "所有人电话")
|
||||
@RequestParam(required = false) String ownerPhone,
|
||||
@Parameter(description = "头像名字")
|
||||
@RequestParam(required = false) String avatarName) {
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
try {
|
||||
com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.rj.entity.FaceDetectLog> page =
|
||||
faceDetectLogService.getPageList(current, size, success, startTime, endTime);
|
||||
faceDetectLogService.getPageList(current, size, success, startTime, endTime, ownerName, ownerPhone, avatarName);
|
||||
|
||||
result.put("success", true);
|
||||
result.put("message", "查询成功");
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
package com.rj.controller;
|
||||
|
||||
import com.rj.dto.VideoSynthesisRequestDto;
|
||||
import com.rj.entity.VideoSynthesisLog;
|
||||
import com.rj.service.IVideoSynthesisService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 视频合成控制器
|
||||
*
|
||||
* @author rj
|
||||
* @date 2025-01-02
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/api/video-synthesis")
|
||||
@Tag(name = "视频合成,根据头像和音频生成视频", description = "视频合成相关接口,根据头像和音频生成视频")
|
||||
public class VideoSynthesisFromController {
|
||||
|
||||
@Autowired
|
||||
private IVideoSynthesisService videoSynthesisService;
|
||||
|
||||
/**
|
||||
* 视频合成接口
|
||||
*/
|
||||
@PostMapping("/synthesize")
|
||||
@Operation(summary = "视频合成", description = "根据图片和音频生成视频")
|
||||
public ResponseEntity<Map<String, Object>> synthesizeVideo(@Valid @RequestBody VideoSynthesisRequestDto requestDto) {
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
log.info("开始视频合成,图片URL: {}, 音频URL: {}", requestDto.getImageUrl(), requestDto.getAudioUrl());
|
||||
|
||||
// 执行视频合成
|
||||
VideoSynthesisLog synthesisLog = videoSynthesisService.synthesizeVideoAndSave(requestDto);
|
||||
|
||||
// 构建响应结果
|
||||
result.put("success", synthesisLog.getSuccess());
|
||||
result.put("message", synthesisLog.getSuccess() ? "视频合成成功" : "视频合成失败");
|
||||
result.put("requestId", synthesisLog.getRequestId());
|
||||
result.put("taskId", synthesisLog.getTaskId());
|
||||
result.put("taskStatus", synthesisLog.getTaskStatus());
|
||||
result.put("videoUrl", synthesisLog.getVideoUrl());
|
||||
result.put("videoDuration", synthesisLog.getVideoDuration());
|
||||
result.put("videoRatio", synthesisLog.getVideoRatio());
|
||||
result.put("processingTimeMs", synthesisLog.getProcessingTimeMs());
|
||||
result.put("imageId", synthesisLog.getImageId());
|
||||
result.put("audioId", synthesisLog.getAudioId());
|
||||
result.put("ownerName", synthesisLog.getOwnerName());
|
||||
result.put("ownerPhone", synthesisLog.getOwnerPhone());
|
||||
result.put("modelProvider", synthesisLog.getModelProvider());
|
||||
|
||||
if (!synthesisLog.getSuccess()) {
|
||||
result.put("errorMessage", synthesisLog.getErrorMessage());
|
||||
return ResponseEntity.badRequest().body(result);
|
||||
}
|
||||
|
||||
return ResponseEntity.ok(result);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("视频合成失败: {}", e.getMessage(), e);
|
||||
result.put("success", false);
|
||||
result.put("message", "视频合成失败: " + e.getMessage());
|
||||
return ResponseEntity.internalServerError().body(result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据请求ID查询视频合成结果
|
||||
*/
|
||||
@GetMapping("/result/{requestId}")
|
||||
@Operation(summary = "查询合成结果", description = "根据请求ID查询视频合成结果")
|
||||
public ResponseEntity<Map<String, Object>> getSynthesisResult(
|
||||
@Parameter(description = "请求ID", required = true)
|
||||
@PathVariable String requestId) {
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
VideoSynthesisLog synthesisLog = videoSynthesisService.getVideoSynthesisLogByRequestId(requestId);
|
||||
|
||||
if (synthesisLog == null) {
|
||||
result.put("success", false);
|
||||
result.put("message", "未找到对应的视频合成记录");
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
result.put("success", true);
|
||||
result.put("message", "查询成功");
|
||||
result.put("requestId", synthesisLog.getRequestId());
|
||||
result.put("taskId", synthesisLog.getTaskId());
|
||||
result.put("taskStatus", synthesisLog.getTaskStatus());
|
||||
result.put("videoUrl", synthesisLog.getVideoUrl());
|
||||
result.put("videoDuration", synthesisLog.getVideoDuration());
|
||||
result.put("videoRatio", synthesisLog.getVideoRatio());
|
||||
result.put("processingTimeMs", synthesisLog.getProcessingTimeMs());
|
||||
result.put("requestTime", synthesisLog.getRequestTime());
|
||||
result.put("responseTime", synthesisLog.getResponseTime());
|
||||
result.put("imageId", synthesisLog.getImageId());
|
||||
result.put("audioId", synthesisLog.getAudioId());
|
||||
result.put("ownerName", synthesisLog.getOwnerName());
|
||||
result.put("ownerPhone", synthesisLog.getOwnerPhone());
|
||||
result.put("modelProvider", synthesisLog.getModelProvider());
|
||||
|
||||
if (!synthesisLog.getSuccess()) {
|
||||
result.put("errorMessage", synthesisLog.getErrorMessage());
|
||||
}
|
||||
|
||||
return ResponseEntity.ok(result);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("查询视频合成结果失败: {}", e.getMessage(), e);
|
||||
result.put("success", false);
|
||||
result.put("message", "查询失败: " + e.getMessage());
|
||||
return ResponseEntity.internalServerError().body(result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据任务ID查询视频合成结果
|
||||
*/
|
||||
@GetMapping("/result/task/{taskId}")
|
||||
@Operation(summary = "根据任务ID查询结果", description = "根据任务ID查询视频合成结果")
|
||||
public ResponseEntity<Map<String, Object>> getSynthesisResultByTaskId(
|
||||
@Parameter(description = "任务ID", required = true)
|
||||
@PathVariable String taskId) {
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
|
||||
try {
|
||||
VideoSynthesisLog synthesisLog = videoSynthesisService.getVideoSynthesisLogByTaskId(taskId);
|
||||
|
||||
if (synthesisLog == null) {
|
||||
result.put("success", false);
|
||||
result.put("message", "未找到对应的视频合成记录");
|
||||
return ResponseEntity.notFound().build();
|
||||
}
|
||||
|
||||
result.put("success", true);
|
||||
result.put("message", "查询成功");
|
||||
result.put("requestId", synthesisLog.getRequestId());
|
||||
result.put("taskId", synthesisLog.getTaskId());
|
||||
result.put("taskStatus", synthesisLog.getTaskStatus());
|
||||
result.put("videoUrl", synthesisLog.getVideoUrl());
|
||||
result.put("videoDuration", synthesisLog.getVideoDuration());
|
||||
result.put("videoRatio", synthesisLog.getVideoRatio());
|
||||
result.put("processingTimeMs", synthesisLog.getProcessingTimeMs());
|
||||
result.put("requestTime", synthesisLog.getRequestTime());
|
||||
result.put("responseTime", synthesisLog.getResponseTime());
|
||||
result.put("imageId", synthesisLog.getImageId());
|
||||
result.put("audioId", synthesisLog.getAudioId());
|
||||
result.put("ownerName", synthesisLog.getOwnerName());
|
||||
result.put("ownerPhone", synthesisLog.getOwnerPhone());
|
||||
result.put("modelProvider", synthesisLog.getModelProvider());
|
||||
|
||||
if (!synthesisLog.getSuccess()) {
|
||||
result.put("errorMessage", synthesisLog.getErrorMessage());
|
||||
}
|
||||
|
||||
return ResponseEntity.ok(result);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("根据任务ID查询视频合成结果失败: {}", e.getMessage(), e);
|
||||
result.put("success", false);
|
||||
result.put("message", "查询失败: " + e.getMessage());
|
||||
return ResponseEntity.internalServerError().body(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -356,6 +356,8 @@ public class MenuController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -326,6 +326,8 @@ public class RoleController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -332,6 +332,8 @@ public class UserRoleController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user