From e0ae7fbdfa73e2989ea60e988eed7ea65746a87b Mon Sep 17 00:00:00 2001
From: shenrongliang <1328040932@qq.com>
Date: 星期二, 08 四月 2025 16:03:13 +0800
Subject: [PATCH] 合成无人像视频

---
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursescenes/vo/AppCourseScenesMegerReqVO.java |    3 +++
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java                 |   42 +++++++++++++++++++++++++++++-------------
 2 files changed, 32 insertions(+), 13 deletions(-)

diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursescenes/vo/AppCourseScenesMegerReqVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursescenes/vo/AppCourseScenesMegerReqVO.java
index 074e531..8678fec 100644
--- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursescenes/vo/AppCourseScenesMegerReqVO.java
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/coursescenes/vo/AppCourseScenesMegerReqVO.java
@@ -42,6 +42,9 @@
     @Schema(description = "鐘舵�� (0: 姝e父, 1: 寮傚父)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
     private Integer status;
 
+    //鏄惁鏈変汉鍍�
+    private String hasPerson;
+
     private AppCourseSceneBackgroundsMegerReqVO background;
 
     private List<AppCourseSceneComponentsMegerReqVO> components;
diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java
index 749dfe0..143ceec 100644
--- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java
+++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java
@@ -128,19 +128,35 @@
             String substring2 = fileName1.substring(0, dotIndex);
             // 鍚堟垚ppt鑳屾櫙锛岃棰戯紝妯℃澘
             //ffmpeg -i 2.png -i 1.mp4 -filter_complex "[0:v]scale=w=ceil(iw/2)*2:h=ceil(ih/2)*2[bg];[1:v]scale=iw/2:ih/2[v1];[bg][v1]overlay=x=0:y=H-h" output.mp4
-            ProcessBuilder builder = new ProcessBuilder(
-                    "ffmpeg",
-                    "-i", cover1,
-                    "-i", cover,
-                    "-i", substring1,
-                    "-filter_complex",
-                    "[0:v]scale=" + Math.round(scene.getBackground().getWidth()) + ":" + Math.round(scene.getBackground().getHeight()) + "[bg];" +
-                            "[1:v]scale=" + Math.round(scene.getComponents().get(1).getWidth()) + ":" + Math.round(scene.getComponents().get(1).getHeight()) + "[v1];" +
-                            "[bg][v1]overlay=x=" + Math.round(scene.getComponents().get(1).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(1).getTop()) + "[img];" +
-                            "[2:v]scale=" + Math.round(scene.getComponents().get(0).getWidth()) + ":" + Math.round(scene.getComponents().get(0).getHeight()) + "[v2];" +
-                            "[img][v2]overlay=x=" + Math.round(scene.getComponents().get(0).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(0).getTop()),
-                    newFileName2
-            );
+            //鍒ゆ柇鏄惁鏈変汉鍍�
+            ProcessBuilder builder = null;
+            if("1".equals(scene.getHasPerson())){
+                builder = new ProcessBuilder(
+                        "ffmpeg",
+                        "-i", cover1,
+                        "-i", cover,
+                        "-i", substring1,
+                        "-filter_complex",
+                        "[0:v]scale=" + Math.round(scene.getBackground().getWidth()) + ":" + Math.round(scene.getBackground().getHeight()) + "[bg];" +
+                                "[1:v]scale=" + Math.round(scene.getComponents().get(1).getWidth()) + ":" + Math.round(scene.getComponents().get(1).getHeight()) + "[v1];" +
+                                "[bg][v1]overlay=x=" + Math.round(scene.getComponents().get(1).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(1).getTop()) + "[img];" +
+                                "[2:v]scale=" + Math.round(scene.getComponents().get(0).getWidth()) + ":" + Math.round(scene.getComponents().get(0).getHeight()) + "[v2];" +
+                                "[img][v2]overlay=x=" + Math.round(scene.getComponents().get(0).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(0).getTop()),
+                        newFileName2
+                );
+            } else if ("2".equals(scene.getHasPerson())) {
+                // 褰撴病鏈変汉鍍忔椂锛岃棰戞斁鍦� cover 鐨勪笅灞�
+                builder = new ProcessBuilder(
+                        "ffmpeg",
+                        "-i", cover1, // 鑳屾櫙鍥�
+                        "-i", substring1, // 瑙嗛
+                        "-filter_complex",
+                        "[0:v]scale=" + Math.round(scene.getBackground().getWidth()) + ":" + Math.round(scene.getBackground().getHeight()) + "[bg];" +
+                                "[1:v]scale=" + Math.round(scene.getComponents().get(0).getWidth()) + ":" + Math.round(scene.getComponents().get(0).getHeight()) + "[v1];" +
+                                "[bg][v1]overlay=x=" + Math.round(scene.getComponents().get(0).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(0).getTop()),
+                        newFileName2 // 杈撳嚭鏂囦欢鍚�
+                );
+            }
             System.out.println(newFileName2);
             builder.redirectErrorStream(true);
             Process process = null;

--
Gitblit v1.9.3