Эх сурвалжийг харах

添加火山方舟大模型 图生视频 sdk接口

cmy 1 сар өмнө
parent
commit
ef6a7d0cf1

+ 5 - 0
pom.xml

@@ -315,6 +315,11 @@
             <artifactId>volc-sdk-java</artifactId>
             <version>1.0.225</version>
         </dependency>
+        <dependency>
+            <groupId>com.volcengine</groupId>
+            <artifactId>volcengine-java-sdk-ark-runtime</artifactId>
+            <version>LATEST</version>
+        </dependency>
         <dependency>
             <groupId>javax.annotation</groupId>
             <artifactId>javax.annotation-api</artifactId>

+ 19 - 1
src/main/java/com/backendsys/modules/sdk/volcengine/controller/VolcengineDemoController.java

@@ -4,6 +4,8 @@ import com.backendsys.modules.common.config.security.annotations.Anonymous;
 import com.backendsys.modules.common.utils.Result;
 import com.backendsys.modules.sdk.volcengine.entity.VisualFaceFusionMovie;
 import com.backendsys.modules.sdk.volcengine.entity.VisualFaceSwapV2;
+import com.backendsys.modules.sdk.volcengine.entity.VolcengineImage2VideoParams;
+import com.backendsys.modules.sdk.volcengine.service.VolcengineImage2VideoService;
 import com.backendsys.modules.sdk.volcengine.service.VolcengineService;
 import io.swagger.v3.oas.annotations.Operation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +20,9 @@ public class VolcengineDemoController {
     @Autowired
     private VolcengineService volcengineService;
 
+    @Autowired
+    private VolcengineImage2VideoService volcengineImage2VideoService;
+
     @Anonymous
     @Operation(summary = "人像融合3.6(最新版)(图像)")
     @PostMapping("/api/volcegine/faceSwapV2")
@@ -40,6 +45,19 @@ public class VolcengineDemoController {
     public Result faceFusionMovieGetResult(String task_id) {
         return Result.success().put("data", volcengineService.faceFusionMovieGetResult(task_id));
     }
-    //
+
+    @Anonymous
+    @Operation(summary = "【图生视频】创建任务")
+    @PostMapping("/api/volcegine/image2Video")
+    public Result image2Video(@RequestBody VolcengineImage2VideoParams params) {
+        return Result.success().put("data", volcengineImage2VideoService.image2Video(params));
+    }
+
+    @Anonymous
+    @Operation(summary = "【图生视频】查询任务(单个)")
+    @GetMapping("/api/volcegine/queryImage2VideoTask")
+    public Result queryImage2VideoTask(String taskId) {
+        return Result.success().put("data", volcengineImage2VideoService.queryImage2VideoTask(taskId));
+    }
 
 }

+ 19 - 0
src/main/java/com/backendsys/modules/sdk/volcengine/entity/VolcengineImage2VideoParams.java

@@ -0,0 +1,19 @@
+package com.backendsys.modules.sdk.volcengine.entity;
+
+import lombok.Data;
+
+/**
+ * 图生视频 创建任务
+ */
+@Data
+public class VolcengineImage2VideoParams {
+
+    /**
+     * 图片地址
+     */
+    private String imageUrl;
+    /**
+     * 文本说明
+     */
+    private String text;
+}

+ 9 - 0
src/main/java/com/backendsys/modules/sdk/volcengine/service/VolcengineImage2VideoService.java

@@ -1,4 +1,13 @@
 package com.backendsys.modules.sdk.volcengine.service;
 
+import com.backendsys.modules.sdk.volcengine.entity.VolcengineImage2VideoParams;
+import com.volcengine.ark.runtime.model.content.generation.CreateContentGenerationTaskResult;
+import com.volcengine.ark.runtime.model.content.generation.GetContentGenerationTaskResponse;
+
 public interface VolcengineImage2VideoService {
+
+    CreateContentGenerationTaskResult image2Video(VolcengineImage2VideoParams params);
+
+    GetContentGenerationTaskResponse queryImage2VideoTask(String taskId);
+
 }

+ 75 - 0
src/main/java/com/backendsys/modules/sdk/volcengine/service/impl/VolcengineImage2VideoServiceImpl.java

@@ -0,0 +1,75 @@
+package com.backendsys.modules.sdk.volcengine.service.impl;
+
+import com.backendsys.modules.sdk.volcengine.entity.VolcengineImage2VideoParams;
+import com.backendsys.modules.sdk.volcengine.service.VolcengineImage2VideoService;
+import com.volcengine.ark.runtime.model.content.generation.CreateContentGenerationTaskRequest;
+import com.volcengine.ark.runtime.model.content.generation.CreateContentGenerationTaskResult;
+import com.volcengine.ark.runtime.model.content.generation.GetContentGenerationTaskRequest;
+import com.volcengine.ark.runtime.model.content.generation.GetContentGenerationTaskResponse;
+import com.volcengine.ark.runtime.service.ArkService;
+import okhttp3.ConnectionPool;
+import okhttp3.Dispatcher;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class VolcengineImage2VideoServiceImpl implements VolcengineImage2VideoService {
+
+
+    static String API_KEY = "ea19ba93-41fa-4bd9-90ec-6b203be84e33";
+    static ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
+    static Dispatcher dispatcher = new Dispatcher();
+    static ArkService service = ArkService.builder()
+            .dispatcher(dispatcher)
+            .connectionPool(connectionPool)
+            .apiKey(API_KEY)
+            .build();
+
+    @Override
+    public CreateContentGenerationTaskResult image2Video(VolcengineImage2VideoParams params) {
+        String model = "doubao-seedance-1-0-pro-250528";
+
+        List<CreateContentGenerationTaskRequest.Content> contents = new ArrayList<>();
+
+        // 图生视频功能
+        // 文本提示词与参数组合
+        if (StringUtils.isNotBlank(params.getText())) {
+            contents.add(CreateContentGenerationTaskRequest.Content.builder()
+                    .type("text")
+                    .text(params.getText())
+                    .build());
+        }
+
+        // 首帧图片 (若仅需使用文本生成视频功能,可将此部分内容进行注释处理。)
+        contents.add(CreateContentGenerationTaskRequest.Content.builder()
+                .type("image_url")
+                .imageUrl(CreateContentGenerationTaskRequest.ImageUrl.builder()
+                        .url(params.getImageUrl()) // 请上传可以访问的图片URL
+                        .build())
+                .build());
+        // 创建视频生成任务
+        CreateContentGenerationTaskRequest createRequest = CreateContentGenerationTaskRequest.builder()
+                .model(model)
+                .content(contents)
+                .build();
+
+        return service.createContentGenerationTask(createRequest);
+
+    }
+
+    @Override
+    public GetContentGenerationTaskResponse queryImage2VideoTask(String taskId) {
+
+        GetContentGenerationTaskRequest getRequest = GetContentGenerationTaskRequest.builder()
+                .taskId(taskId)
+                .build();
+
+        return service.getContentGenerationTask(getRequest);
+
+    }
+
+}