视频模板代码框架
This commit is contained in:
@@ -20,14 +20,15 @@ import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* 人脸检测日志服务实现
|
||||
* 图像检测日志服务实现
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, FaceDetectLog> implements IFaceDetectLogService {
|
||||
|
||||
private static final String API_URL = "https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/face-detect";
|
||||
|
||||
private static final String API_URL_AA = "https://dashscope.aliyuncs.com/api/v1/services/aigc/image2video/aa-detect";
|
||||
|
||||
@Value("${dashscope.api.key:}")
|
||||
private String apiKey;
|
||||
|
||||
@@ -44,27 +45,27 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
try {
|
||||
return save(faceDetectLog);
|
||||
} catch (Exception e) {
|
||||
log.error("保存人脸检测日志失败: {}", e.getMessage(), e);
|
||||
log.error("保存图像检测日志失败: {}", e.getMessage(), e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行人脸检测并保存日志
|
||||
* 执行图像检测并保存日志
|
||||
*/
|
||||
public FaceDetectLog detectFaceAndSave(String imageUrl) {
|
||||
return detectFaceAndSave(imageUrl, null, null, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行人脸检测并保存日志(带扩展信息)
|
||||
* 执行图像检测并保存日志(带扩展信息)
|
||||
*/
|
||||
public FaceDetectLog detectFaceAndSave(String imageUrl, String ownerName, String ownerPhone, String avatarName) {
|
||||
return detectFaceAndSave(imageUrl, ownerName, ownerPhone, avatarName, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行人脸检测并保存日志(带扩展信息和模型名)
|
||||
* 执行图像检测并保存日志(带扩展信息和模型名)
|
||||
*/
|
||||
public FaceDetectLog detectFaceAndSave(String imageUrl, String ownerName, String ownerPhone, String avatarName, String model) {
|
||||
if (apiKey == null || apiKey.trim().isEmpty()) {
|
||||
@@ -109,20 +110,29 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
headers.setBearerAuth(apiKey);
|
||||
log.info("发送人脸检测请求,requestBody : {}, 请求参数headers: {}", requestBody , headers);
|
||||
log.info("发送图像检测请求,requestBody : {}, 请求参数headers: {}", requestBody , headers);
|
||||
// 创建请求实体 parameters.ratio 希望检测确认的画幅,可选 "1:1"或"3:4"。默认值为"1:1"。
|
||||
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(requestBody, headers);
|
||||
|
||||
ResponseEntity<String> response = null;
|
||||
if ( modelName.equals("animate-anyone-detect-gen2")){
|
||||
response = restTemplate.exchange(
|
||||
API_URL_AA,
|
||||
HttpMethod.POST,
|
||||
requestEntity,
|
||||
String.class
|
||||
);
|
||||
}else {
|
||||
response = restTemplate.exchange(
|
||||
API_URL,
|
||||
HttpMethod.POST,
|
||||
requestEntity,
|
||||
String.class
|
||||
);
|
||||
}
|
||||
|
||||
// 发送请求
|
||||
log.info("发送人脸检测请求,请求ID: {}, 图片URL: {}", requestId, imageUrl);
|
||||
|
||||
ResponseEntity<String> response = restTemplate.exchange(
|
||||
API_URL,
|
||||
HttpMethod.POST,
|
||||
requestEntity,
|
||||
String.class
|
||||
);
|
||||
|
||||
log.info("发送图像检测请求,请求ID: {}, 图片URL: {}", requestId, imageUrl);
|
||||
|
||||
// 计算处理时间
|
||||
long endTime = System.currentTimeMillis();
|
||||
long processingTime = endTime - startTime;
|
||||
@@ -134,7 +144,7 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
faceDetectLog.setResponseData(response.getBody());
|
||||
|
||||
// 处理响应
|
||||
log.info("人脸检测响应,状态码: {}, 处理时间: {}ms", response.getStatusCode(), processingTime);
|
||||
log.info("图像检测响应,response: {}, 处理时间: {}ms", response.toString(), processingTime);
|
||||
|
||||
// 解析JSON响应
|
||||
if (response.getStatusCode() == HttpStatus.OK) {
|
||||
@@ -146,25 +156,34 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
isSuccess = jsonResponse.get("output").get("pass").asBoolean();
|
||||
faceDetectLog.setSuccess(isSuccess);
|
||||
|
||||
log.info("人脸检测结果 - pass: {}", isSuccess);
|
||||
log.info("图像检测结果 - 头像 pass: {}", isSuccess);
|
||||
}
|
||||
|
||||
if (jsonResponse.has("output") && jsonResponse.get("output").has("check_pass")) {
|
||||
isSuccess = jsonResponse.get("output").get("check_pass").asBoolean();
|
||||
faceDetectLog.setSuccess(isSuccess);
|
||||
|
||||
log.info("图像检测结果 (animate-anyone-detect-gen2 舞动人像 )- check_pass: {}", isSuccess);
|
||||
}
|
||||
|
||||
|
||||
// else {
|
||||
// // 如果没有pass字段,则根据HTTP状态码判断
|
||||
// isSuccess = response.getStatusCode().is2xxSuccessful();
|
||||
// faceDetectLog.setSuccess(isSuccess);
|
||||
// }
|
||||
|
||||
// 检查是否有检测到人脸
|
||||
// 检查是否有检测到图像
|
||||
int faceCount = 0;
|
||||
if (jsonResponse.has("output")) {
|
||||
JsonNode output = jsonResponse.get("output");
|
||||
|
||||
// 根据pass字段判断是否检测到人脸
|
||||
// 根据pass字段判断是否检测到图像
|
||||
if (output.has("pass")) {
|
||||
boolean pass = output.get("pass").asBoolean();
|
||||
faceDetectLog.setFaceCount(1);
|
||||
|
||||
log.info("人脸检测结果 - pass: {}, 检测到人脸数量: {}", pass, faceDetectLog.getFaceCount());
|
||||
log.info("图像检测结果 - pass: {}, 检测到图像数量: {}", pass, faceDetectLog.getFaceCount());
|
||||
|
||||
// 记录message信息
|
||||
if (output.has("message")) {
|
||||
@@ -173,13 +192,13 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
}
|
||||
}
|
||||
|
||||
// 解析人脸区域坐标(如果API返回中包含)
|
||||
// 解析图像区域坐标(如果API返回中包含)
|
||||
if (output.has("face_bbox")) {
|
||||
JsonNode faceBbox = output.get("face_bbox");
|
||||
if (faceBbox.isArray()) {
|
||||
String faceBboxStr = faceBbox.toString();
|
||||
faceDetectLog.setFaceBbox(faceBboxStr);
|
||||
log.info("人脸区域坐标: {}", faceBboxStr);
|
||||
log.info("图像区域坐标: {}", faceBboxStr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,9 +240,9 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
// 保存到数据库
|
||||
boolean saved = saveFaceDetectLog(faceDetectLog);
|
||||
if (saved) {
|
||||
log.info("人脸检测日志已保存,请求ID: {}", requestId);
|
||||
log.info("图像检测日志已保存,请求ID: {}", requestId);
|
||||
} else {
|
||||
log.error("保存人脸检测日志失败,请求ID: {}", requestId);
|
||||
log.error("保存图像检测日志失败,请求ID: {}", requestId);
|
||||
}
|
||||
|
||||
return faceDetectLog;
|
||||
@@ -233,7 +252,7 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
} catch (HttpServerErrorException e) {
|
||||
return handleError(faceDetectLog, e, "服务器错误 (5xx): " + e.getStatusCode(), startTime);
|
||||
} catch (Exception e) {
|
||||
return handleError(faceDetectLog, e, "人脸检测请求失败: " + e.getMessage(), startTime);
|
||||
return handleError(faceDetectLog, e, "图像检测请求失败: " + e.getMessage(), startTime);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -257,7 +276,7 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
faceDetectLog.setResponseData(((HttpServerErrorException) e).getResponseBodyAsString());
|
||||
}
|
||||
|
||||
log.error("人脸检测失败: {}", errorMessage);
|
||||
log.error("图像检测失败: {}", errorMessage);
|
||||
log.error("错误详情: {}", e.getMessage());
|
||||
|
||||
// 保存错误日志到数据库
|
||||
@@ -305,7 +324,7 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询人脸检测日志
|
||||
* 分页查询图像检测日志
|
||||
*/
|
||||
@Override
|
||||
public com.baomidou.mybatisplus.extension.plugins.pagination.Page<FaceDetectLog> getPageList(
|
||||
@@ -394,7 +413,7 @@ public class FaceDetectLogServiceImpl extends ServiceImpl<FaceDetectLogMapper, F
|
||||
.average()
|
||||
.orElse(0.0);
|
||||
|
||||
// 查询总人脸数量
|
||||
// 查询总图像数量
|
||||
int totalFaceCount = logs.stream()
|
||||
.filter(log -> log.getFaceCount() != null)
|
||||
.mapToInt(FaceDetectLog::getFaceCount)
|
||||
|
||||
Reference in New Issue
Block a user