From 9cbbd2531ed5e950fe51a652c1994eb17da8cc45 Mon Sep 17 00:00:00 2001 From: 康鲁杰 <60095866+KangLujie@users.noreply.github.com> Date: 星期一, 31 三月 2025 16:03:48 +0800 Subject: [PATCH] 抠图 --- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java | 20 +++++++++ yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceUtil.java | 50 +++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 5 deletions(-) diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java index 44f12c7..ab1358c 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java @@ -61,8 +61,26 @@ digitalHumansMapper.updateById(updateObj); if (updateObj.getStatus() == 2){ + DigitalHumansTrailVO digitalHumansTrailVO = transferVO(updateObj.getId()); + if (digitalHumansTrailVO.getIsTransparent() == 1) { + digitalHumansMapper.update( + new UpdateWrapper<DigitalHumansDO>() + .lambda() + .eq(DigitalHumansDO::getCode, digitalHumansTrailVO.getCode()) // 鏉′欢锛歝ode 绛変簬浼犲叆鐨勫�� + .set(DigitalHumansDO::getFixVideoUrl,digitalHumansTrailVO.getVideoUrl()) + ); + } + if (digitalHumansTrailVO.getIsTransparent() == 2) { + digitalHumansMapper.update( + new UpdateWrapper<DigitalHumansDO>() + .lambda() + .eq(DigitalHumansDO::getCode, digitalHumansTrailVO.getCode()) // 鏉′欢锛歝ode 绛変簬浼犲叆鐨勫�� + .set(DigitalHumansDO::getStatus,6) + ); + digitalHumansServiceUtil.remoteHeyGemMatting(digitalHumansTrailVO); + + } //鍙楃悊鎵h棰� - digitalHumansServiceUtil.remoteHeyGemMatting(transferVO(updateObj.getId())); } //寮傛璁粌妯″瀷 if (updateObj.getStatus() == 3){ diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceUtil.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceUtil.java index 0e3b4ce..2763b98 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceUtil.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceUtil.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.digitalcourse.service.digitalhumans; +import cn.hutool.http.HttpException; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.iocoder.yudao.module.digitalcourse.controller.admin.digitalhumans.vo.DigitalHumansTrailVO; @@ -41,6 +42,8 @@ public class DigitalHumansServiceUtil { private static final String HEYGEM_CORE_URL = "heygem.core.url"; + private static final String VIDEO2MOV = "video2mov"; + private static final String VIDEO2MOV_URL = "video2mov.url"; private static final String HEYGEM_VOICE_DATA = "heygem.voice.data"; private static final String HEYGEM_FACE2FACE = "heygem.face2face"; private static final String EASEGEN_URL = "easegen.url"; @@ -62,7 +65,47 @@ private FileApi fileApi; public void remoteHeyGemMatting(DigitalHumansTrailVO digitalHumansTrailVO) { - System.out.println(digitalHumansTrailVO); + String video2movUrl = configApi.getConfigValueByKey(VIDEO2MOV); + String extname = digitalHumansTrailVO.getVideoUrl().substring(digitalHumansTrailVO.getVideoUrl().lastIndexOf(".")); + String modelFileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + extname; + String modelFilePath = Paths.get(video2movUrl, modelFileName).toString(); + + String substring = configApi.getConfigValueByKey(EASEGEN_URL) + digitalHumansTrailVO.getVideoUrl().substring(digitalHumansTrailVO.getVideoUrl().lastIndexOf("/")); + + try { + Files.copy(Path.of(substring), Path.of(modelFilePath), StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + throw new RuntimeException(e); + } + //modelFileName + try { + // 鍙戦�丳OST璇锋眰 + HttpResponse execute = HttpRequest.get(configApi.getConfigValueByKey(VIDEO2MOV_URL) + "?file=" + modelFileName).execute(); + String body = execute.body(); + // 妫�鏌ュ搷搴旂姸鎬佺爜鏄惁鎴愬姛 + if (execute.getStatus() != 200) { + digitalHumansMapper.update(new UpdateWrapper<DigitalHumansDO>().lambda().eq(DigitalHumansDO::getCode, digitalHumansTrailVO.getCode()).set(DigitalHumansDO::getStatus, 7)); + return; + } + // 瑙f瀽鍝嶅簲锛屾鏌ユ槸鍚︽湁閿欒淇℃伅 + JSONObject responseJson = JSON.parseObject(body); + String final_video_path = responseJson.getString("final_video_path"); + byte[] content = Files.readAllBytes(Paths.get(final_video_path)); + String fileUrl = fileApi.createFile(content); + digitalHumansMapper.update( + new UpdateWrapper<DigitalHumansDO>() + .lambda() + .eq(DigitalHumansDO::getCode, digitalHumansTrailVO.getCode()) // 鏉′欢锛歝ode 绛変簬浼犲叆鐨勫�� + .set(DigitalHumansDO::getFixVideoUrl, fileUrl) + .set(DigitalHumansDO::getStatus,2) + ); + System.out.println(responseJson); + // 澶勭悊涓氬姟閫昏緫閿欒锛屾洿鏂扮姸鎬佸拰閿欒淇℃伅 + } catch (HttpException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } } @Async public void remoteHeyGemTrain(DigitalHumansTrailVO digitalHumansTrailVo){ @@ -75,12 +118,11 @@ } catch (IOException e) { throw new RuntimeException(e); } - //todo 瑙嗛鎶犲浘 - String extname = digitalHumansTrailVo.getVideoUrl().substring(digitalHumansTrailVo.getVideoUrl().lastIndexOf(".")); + String extname = digitalHumansTrailVo.getFixVideoUrl().substring(digitalHumansTrailVo.getFixVideoUrl().lastIndexOf(".")); String modelFileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + extname; String modelFilePath = Paths.get(temp, modelFileName).toString(); - String substring = configApi.getConfigValueByKey(EASEGEN_URL)+digitalHumansTrailVo.getVideoUrl().substring(digitalHumansTrailVo.getVideoUrl().lastIndexOf("/")); + String substring = configApi.getConfigValueByKey(EASEGEN_URL)+digitalHumansTrailVo.getFixVideoUrl().substring(digitalHumansTrailVo.getFixVideoUrl().lastIndexOf("/")); try { Files.copy(Path.of(substring), Path.of(modelFilePath), StandardCopyOption.REPLACE_EXISTING); -- Gitblit v1.9.3