From 2abf536103c78a05b3c7e8bf21a9ac3e409f6de8 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Tue, 13 May 2025 08:26:23 +0800 Subject: [PATCH] 'commit' --- .../aiSupport/Util/JiMeng/JmCommon.java | 5 +- .../aiSupport/Util/JiMeng/JmText2Image.java | 4 -- .../aiSupport/Util/JiMeng/JmText2Video.java | 49 ++++++++++++++++++- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmCommon.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmCommon.java index ee8c0c10..58856cb6 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmCommon.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmCommon.java @@ -44,7 +44,10 @@ public class JmCommon { protected static final String ak; // Access Key protected static final String sk; // Secret Key public static Prop PropKit; // 配置文件工具 - + // 获取项目根目录路径 + protected static String projectRoot = System.getProperty("user.dir").replace("\\","/")+"/dsAiSupport"; + // 拼接相对路径 + protected static String basePath = projectRoot + "/src/main/java/com/dsideal/aiSupport/Util/JiMeng/Example/"; /** * 静态初始化块 * 加载配置文件并初始化URL编码器 diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Image.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Image.java index f2e5da0c..e324440c 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Image.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Image.java @@ -46,10 +46,6 @@ public class JmText2Image extends JmCommon { //String prompt = "制作一张vlog视频封面。马卡龙配色,美女旅游照片+色块的拼贴画风格,主文案是“威海旅游vlog”,副文案是“特种兵一日游 被低估的旅游城市”,海报主体是一个穿着短裙、梳双马尾的少女,人物白色描边"; //String prompt = "过曝,强对比,夜晚,雪地里,巨大的黄色浴缸,小狗泡澡带墨镜,在喝红酒,胶片摄影,毛刺质感,复古滤镜,夜晚,过度曝光,古早,70年代摄影,复古老照片,闪光灯拍摄,闪光灯效果,过曝,过度曝光,闪光灯过曝,极简,高饱和复古色,70s vintage photography, vintage, retro style"; String prompt="南瓜羹->画面展现一碗百合南瓜羹的一半,米黄色的糯米粉勾芡,块块橙色南瓜在橙色粥中,南瓜丝丝沙沙质感,紫白色百合点缀"; - // 获取项目根目录路径 - String projectRoot = System.getProperty("user.dir").replace("\\","/")+"/dsAiSupport"; - // 拼接相对路径 - String basePath = projectRoot + "/src/main/java/com/dsideal/aiSupport/Util/JiMeng/Example/"; String saveImagePath = basePath + "3.jpg"; log.info("保存图片路径:" + saveImagePath); JmText2Image.generateImage(prompt, saveImagePath); diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Video.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Video.java index abb3ab8c..3541937b 100644 --- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Video.java +++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Util/JiMeng/JmText2Video.java @@ -6,6 +6,10 @@ import com.jfinal.kit.StrKit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.*; public class JmText2Video extends JmCommon { @@ -28,25 +32,66 @@ public class JmText2Video extends JmCommon { return JSON.parseObject(responseBody); } + /** + * 从URL下载文件到指定路径 + * + * @param fileUrl 文件URL + * @param saveFilePath 保存路径 + * @throws Exception 下载过程中的异常 + */ + public static void downloadFile(String fileUrl, String saveFilePath) throws Exception { + URL url = new URL(fileUrl); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + connection.setConnectTimeout(5000); + connection.setReadTimeout(60000); + + // 获取输入流 + try (InputStream in = connection.getInputStream(); + FileOutputStream out = new FileOutputStream(saveFilePath)) { + + byte[] buffer = new byte[4096]; + int bytesRead; + + // 读取数据并写入文件 + while ((bytesRead = in.read(buffer)) != -1) { + out.write(buffer, 0, bytesRead); + } + + log.info("文件下载成功,保存路径: {}", saveFilePath); + } catch (Exception e) { + log.error("文件下载失败: {}", e.getMessage(), e); + throw e; + } finally { + connection.disconnect(); + } + } + public static void main(String[] args) throws Exception { String prompt = "蓝色毛绒玩具在超市里拖地,结果拖把洒出好多五颜六色的粉末,接着把粉末洒向镜头前,镜头随之穿过粉末"; + //保存的文件名称 + String mp4FileName = "1.mp4"; + + JSONObject jo = JmText2Video.generateVideo(prompt); log.info("结果:{}", jo); String taskId = jo.getJSONObject("data").getString("task_id"); //检查任务是不是已经结束 while (true) { - JSONObject result = JmCommon.queryTaskResult(taskId); + JSONObject result = queryTaskResult(taskId); log.info("查询结果:{}", result); if (result.getInteger("code") != 10000) { log.error("查询失败,错误代码=" + result.getInteger("code")); break; } JSONObject data = result.getJSONObject("data"); - if (!StrKit.isBlank(data.getString("video_url"))) { String video_url = data.getString("video_url"); log.info("视频地址:{}", video_url); //下载mp4 + String saveVideoPath = basePath + mp4FileName; + downloadFile(video_url, saveVideoPath); + log.info("视频已下载到: {}", saveVideoPath); break; } else { Thread.sleep(3000);