You need to enable JavaScript to run this app.
导航
使用动态输入 Schema 实现任务串联
最近更新时间:2025.10.30 19:25:35首次发布时间:2025.10.30 19:16:56
复制全文
我的收藏
有用
有用
无用
无用

本文详细介绍 StartExecution - 提交媒体处理任务接口中的动态输入 Schema 功能。通过此功能,您可以构建复杂、自动化的媒体处理流水线,将多个任务节点无缝串联起来。

功能概述

在传统的媒体处理中,如果您需要对一个视频执行多个连续操作(例如先进行视频生成,再对生成结果进行画质增强),通常需要分两步操作:

  1. 提交视频生成任务。
  2. 等待任务完成,获取输出结果(新视频的 Vid 或 FileName)。
  3. 手动将第一个任务的结果作为输入,提交画质增强任务。

动态输入 Schema 功能允许您在单次任务提交中,预先定义好工作流内部不同节点之间的数据依赖关系。工作流引擎会自动处理节点间的数据传递和执行调度,实现全自动的任务串联。

说明

  • 除广告审核和视频摘要外,大部分任务都支持作为下游节点,通过 Schema 接收动态输入。
  • FileId 模式的输入不支持通过 Schema 动态指定。

实现方式

动态输入 Schema 的工作原理基于 Go Template 语法。

  1. 启用 Schema:在工作流的下游节点的 Input 对象中,将 Schema 字段的值设为 Template
  2. 定义数据引用:在工作流的下游节点的 Input 对象的其他字段(如 VidDirectUrl.FileName)中,使用 Go Template 语法来引用上游节点的输出。
  3. 自动解析与注入:当您通过 StartExecution 接口提交整个工作流后,系统会:
    • 首先执行没有依赖的上游节点。
    • 当上游节点执行成功后,引擎会将其输出结果存入一个上下文 map 中。
    • 在执行下游节点前,引擎会解析其 Input 字段中的模板字符串,从上下文中查找并动态注入所需的数据。
    • 完成数据注入后,自动开始执行下游节点。

Go Template 语法详解

模板字符串的基本语法结构如下:
"{{.Output.<上游节点名称>.<输出参数路径>}}"

语法部分

说明

示例

{{ ... }}

Go Template 的固定语法边界,用于包裹表达式。

.

代表模板的根对象,即工作流的执行上下文。

Output

一个固定的 map 结构,作为所有上游节点输出结果的容器。

<上游节点名称>

您在工作流中为上游节点设置的节点名称 (Name),用于从 Output map 中索引该节点的输出。

.Output.VideoGeneration

<输出参数路径>

您想要引用的、上游节点输出结果中的具体字段路径,支持多层级访问。

.Output.VideoGeneration.Video.Vid

使用示例:先视频生成,再画质增强

假设您需要通过 AI 生成一个视频,并立即对其进行超分处理。您可以在 StartExecution 接口的 Operation.Workflow.Nodes 数组中定义如下两个节点:

  • 节点一:视频生成
    • Name: "VideoGeneration"
    • Operation: 配置视频生成任务,例如使用 doubao-seedance-lite 模型生成一个视频。
  • 节点二:画质增强
    • Name: "Enhance"
    • Dependence: ["VideoGeneration"],声明此节点依赖于上游节点。
    • Input: 配置动态输入。
      • Schema: "Template",启用动态输入功能。
      • Input.Vid: {{.Output.VideoGeneration.Video.Vid}},引用上游节点的输出 Vid。

完整请求如下:

POST open.volcengineapi.com/?Action=StartExecution&Version=2025-01-01
Content-Type: application/json

{
   "SpaceName" : "your-test-space",
   "Operation" : {
      "Type" : "Workflow",
      "Workflow" : {
         "Nodes" : [
            {
               "Name" : "VideoGeneration",
               "Operation" : {
                  "Type" : "Task",
                  "Task" : {
                     "Type" : "VideoGeneration",
                     "VideoGeneration" : {
                        "NewVid" : true,
                        "Prompt" : "一个女人在大轮船旁边冲浪,慢镜头",
                        "VideoOption" : {
                           "Model" : "doubao-seedance-lite",
                           "Resolution" : "720p"
                        }
                     }
                  }
               }
            },
            {
               "Name" : "Enhance",
               "Input" : {
                  "Type": "Vid",
                  "Vid": "{{.Output.VideoGeneration.Video.Vid}}",
                  "Schema": "Template"
               },
               "Operation" : {
                  "Type" : "Task",
                  "Task" : {
                     "Type" : "Enhance",
                     "Enhance" : {
                        "Type": "Moe",
                        "MoeEnhance": {
                          "Config": "aigc",
                          "Target": {
                            "Res": "1080p"
                          }
                        }
                     }                     
                  }     
               },
               "Dependence":["VideoGeneration"]
            }
         ]
      }
   }
}