From 15b801d17f486af216bd424383684c88da790df6 Mon Sep 17 00:00:00 2001
From: shenrongliang <1328040932@qq.com>
Date: 星期二, 22 四月 2025 16:37:34 +0800
Subject: [PATCH] 处理透明背景视频合成

---
 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

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 9721587..cb1bf05 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
@@ -167,19 +167,22 @@
                         newFileName2 // 杈撳嚭鏂囦欢鍚�
                 );
             } else if ("2".equals(scene.getHasPerson())) {
-                //cover1鏀惧湪substring1鐨勶紝璁ヽover1鎸′綇substring1,鑳屾櫙鍥緋pt鍐呭鍜屼汉鍍忚棰戜笉鍙橈紝鍙槸灞傜骇鍏崇郴淇敼涓�涓�
+                // 褰撴病鏈変汉鍍忔椂锛岃棰戞斁鍦� cover 鐨勪笅灞�
                 builder = new ProcessBuilder(
                         "ffmpeg",
-                        "-i", cover1, // 鑳屾櫙鍥�
-                        "-i", cover,  // PPT鍐呭
-                        "-i", substring1, // 浜哄儚瑙嗛
+                        "-i", cover1, // 鑳屾櫙鍥� 1
+                        "-i", substring1, // 瑙嗛
+                        "-i", cover1, // 鑳屾櫙鍥� 2
+                        "-i", cover, // PPT鍐呭
                         "-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];" +
-                        "[v2][img]overlay=x=" + Math.round(scene.getComponents().get(0).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(0).getTop()),
-                        newFileName2
+                        "[0:v]scale=" + Math.round(scene.getBackground().getWidth()) + ":" + Math.round(scene.getBackground().getHeight()) + "[bg1];" +
+                                "[1:v]scale=" + Math.round(scene.getComponents().get(0).getWidth()) + ":" + Math.round(scene.getComponents().get(0).getHeight()) + "[v1];" +
+                                "[bg1][v1]overlay=x=" + Math.round(scene.getComponents().get(0).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(0).getTop()) + "[img1];" +
+                                "[2:v]scale=" + Math.round(scene.getBackground().getWidth()) + ":" + Math.round(scene.getBackground().getHeight()) + "[bg2];" +
+                                "[img1][bg2]overlay=shortest=1[v2];" +
+                                "[3:v]scale=" + Math.round(scene.getComponents().get(1).getWidth()) + ":" + Math.round(scene.getComponents().get(1).getHeight()) + "[v3];" +
+                                "[v2][v3]overlay=x=" + Math.round(scene.getComponents().get(1).getMarginLeft()) + ":y=" + Math.round(scene.getComponents().get(1).getTop()),
+                        newFileName2 // 杈撳嚭鏂囦欢鍚�
                 );
             }
             System.out.println(newFileName2);

--
Gitblit v1.9.3