|
@@ -1,5 +1,6 @@
|
|
|
package com.backendsys.controller.api;
|
|
|
|
|
|
+import cn.hutool.json.JSONArray;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
@@ -8,12 +9,14 @@ import com.backendsys.aspect.QueuingPoll;
|
|
|
//import com.backendsys.service.SDKService.SDKTinypng.SDKTinypngService;
|
|
|
import com.backendsys.service.TestService;
|
|
|
import com.backendsys.utils.ResourceUtil;
|
|
|
+import com.backendsys.utils.response.Result;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
|
import cn.afterturn.easypoi.word.WordExportUtil;
|
|
|
import com.backendsys.utils.MD5Util;
|
|
|
|
|
|
+import com.tencentcloudapi.common.Credential;
|
|
|
import org.apache.poi.xwpf.usermodel.XWPFDocument;
|
|
|
import org.redisson.api.*;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -34,11 +37,141 @@ import java.util.concurrent.CompletableFuture;
|
|
|
import java.util.concurrent.ExecutionException;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
+//import com.tencentcloudapi.facefusion.v20181201.FacefusionClient;
|
|
|
+//import com.tencentcloudapi.facefusion.v20181201.models.*;
|
|
|
+
|
|
|
+//import com.tencentcloudapi.facefusion.v20220927.FacefusionClient;
|
|
|
+//import com.tencentcloudapi.facefusion.v20220927.models.*;
|
|
|
+
|
|
|
+//import com.tencentcloudapi.common.Credential;
|
|
|
+//import com.tencentcloudapi.common.profile.ClientProfile;
|
|
|
+//import com.tencentcloudapi.common.profile.HttpProfile;
|
|
|
+//import com.tencentcloudapi.common.exception.TencentCloudSDKException;
|
|
|
+//import com.tencentcloudapi.facefusion.v20181201.FacefusionClient;
|
|
|
+//import com.tencentcloudapi.facefusion.v20181201.models.*;
|
|
|
+
|
|
|
+
|
|
|
+import com.tencentcloudapi.common.CommonClient;
|
|
|
+import com.tencentcloudapi.common.Credential;
|
|
|
+import com.tencentcloudapi.common.exception.TencentCloudSDKException;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
@RestController
|
|
|
@RequestMapping("/api/test")
|
|
|
public class TestController {
|
|
|
|
|
|
+
|
|
|
+ @Value("${tencent.facefusion.secret-id}")
|
|
|
+ private String SECRET_ID;
|
|
|
+ @Value("${tencent.facefusion.secret-key}")
|
|
|
+ private String SECRET_KEY;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ // SubmitMediaModeration 提交审核任务
|
|
|
+ // DescribeMediaModeration 查询审核结果
|
|
|
+ // SubmitLongVideoFaceFusionJobPro 视频人脸融合异步处理任务,成功提交任务后返回任务的Job id 、预计完成时间以及目前队列长度。
|
|
|
+ // QueryVideoFaceFusionJob 通过Job Id查询视频人脸融合任务的进度和状态
|
|
|
+ */
|
|
|
+
|
|
|
+ /**
|
|
|
+ * [腾讯云-人脸融合] 提交审核任务 (视频)
|
|
|
+ */
|
|
|
+ @PostMapping("SubmitMediaModeration")
|
|
|
+ public String SubmitMediaModeration(@RequestBody Map<String, Object> requestBody) throws TencentCloudSDKException {
|
|
|
+
|
|
|
+ String videoUrl = (String) requestBody.get("videoUrl");
|
|
|
+// String videoUrl = "https://guangzhou-1320301544.cos-website.ap-guangzhou.myqcloud.com/test/ai-face/video/3.mp4";
|
|
|
+
|
|
|
+ Credential cred = new Credential(SECRET_ID, SECRET_KEY);
|
|
|
+ CommonClient client = new CommonClient("facefusion", "2022-09-27", cred, "ap-guangzhou");
|
|
|
+
|
|
|
+ String param = "{\"VideoUrl\":\"" + videoUrl + "\"}";
|
|
|
+ String resp = client.call("SubmitMediaModeration", param);
|
|
|
+ System.out.println(resp);
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * [腾讯云-人脸融合] 查询审核结果
|
|
|
+ */
|
|
|
+ @GetMapping("DescribeMediaModeration")
|
|
|
+ public String DescribeMediaModeration(String JobId) throws TencentCloudSDKException {
|
|
|
+ Credential cred = new Credential(SECRET_ID, SECRET_KEY);
|
|
|
+ CommonClient client = new CommonClient("facefusion", "2022-09-27", cred, "ap-guangzhou");
|
|
|
+
|
|
|
+ String param = "{\"JobId\":\"" + JobId + "\"}";
|
|
|
+ String resp = client.call("DescribeMediaModeration", param);
|
|
|
+ System.out.println(resp);
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 视频人脸融合异步处理任务,成功提交任务后返回任务的Job id 、预计完成时间以及目前队列长度。
|
|
|
+ */
|
|
|
+ @PostMapping("/SubmitLongVideoFaceFusionJobPro")
|
|
|
+ public String SubmitLongVideoFaceFusionJobPro(@RequestBody Map<String, Object> requestBody) {
|
|
|
+ try {
|
|
|
+ // 从Map中获取参数
|
|
|
+ List<Map<String, Object>> TemplateInfos = (List<Map<String, Object>>) requestBody.get("TemplateInfos");
|
|
|
+ List<Map<String, Object>> MergeInfos = (List<Map<String, Object>>) requestBody.get("MergeInfos");
|
|
|
+ String VideoUrl = (String) requestBody.get("VideoUrl");
|
|
|
+ /*
|
|
|
+ https://guangzhou-1320301544.cos-website.ap-guangzhou.myqcloud.com/test/ai-face/face/fe-1.png
|
|
|
+ https://guangzhou-1320301544.cos-website.ap-guangzhou.myqcloud.com/test/ai-face/face/fe-2.jpg
|
|
|
+ https://guangzhou-1320301544.cos-website.ap-guangzhou.myqcloud.com/test/ai-face/face/m-1.png
|
|
|
+ https://guangzhou-1320301544.cos-website.ap-guangzhou.myqcloud.com/test/ai-face/face/m-2.png
|
|
|
+ */
|
|
|
+ // String imgUrl = "https://guangzhou-1320301544.cos-website.ap-guangzhou.myqcloud.com/test/ai-face/face/fe-2.jpg";
|
|
|
+ // String videoUrl = "https://guangzhou-1320301544.cos-website.ap-guangzhou.myqcloud.com/test/ai-face/video/3.mp4";
|
|
|
+
|
|
|
+ Credential cred = new Credential(SECRET_ID, SECRET_KEY);
|
|
|
+ // FacefusionClient client = new FacefusionClient(cred, "ap-guangzhou");
|
|
|
+ CommonClient client = new CommonClient("facefusion", "2022-09-27", cred, "ap-guangzhou");
|
|
|
+
|
|
|
+ JSONObject param = new JSONObject();
|
|
|
+ JSONArray paramMergeInfos = JSONUtil.parseArray(MergeInfos);
|
|
|
+ JSONArray paramTemplateInfos = JSONUtil.parseArray(TemplateInfos);
|
|
|
+
|
|
|
+ System.out.println("paramMergeInfos:");
|
|
|
+ System.out.println(paramMergeInfos);
|
|
|
+ System.out.println("paramTemplateInfos:");
|
|
|
+ System.out.println(paramTemplateInfos);
|
|
|
+
|
|
|
+ param.set("VideoUrl", VideoUrl);
|
|
|
+ param.set("MergeInfos", MergeInfos);
|
|
|
+ param.set("TemplateInfos", TemplateInfos);
|
|
|
+
|
|
|
+ System.out.println("param:");
|
|
|
+ System.out.println(param);
|
|
|
+
|
|
|
+ String resp = client.call("SubmitLongVideoFaceFusionJobPro", JSONUtil.toJsonStr(param));
|
|
|
+ System.out.println(resp);
|
|
|
+ return resp;
|
|
|
+ } catch (TencentCloudSDKException e) {
|
|
|
+ System.out.println(e);
|
|
|
+ System.out.println(e.getMessage());
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过Job Id查询视频人脸融合任务的进度和状态
|
|
|
+ */
|
|
|
+ @GetMapping("QueryVideoFaceFusionJob")
|
|
|
+ public String QueryVideoFaceFusionJob(String JobId) throws TencentCloudSDKException {
|
|
|
+ Credential cred = new Credential(SECRET_ID, SECRET_KEY);
|
|
|
+ CommonClient client = new CommonClient("facefusion", "2022-09-27", cred, "ap-guangzhou");
|
|
|
+
|
|
|
+ String param = "{\"JobId\":\"" + JobId + "\"}";
|
|
|
+ String resp = client.call("QueryVideoFaceFusionJob", param);
|
|
|
+ System.out.println(resp);
|
|
|
+ return resp;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Value("${file.upload.directory}") // 配置保存文件的目录
|
|
|
private String uploadDirectory;
|
|
|
|