You need to enable JavaScript to run this app.
文档中心
视频点播

视频点播

复制全文
下载 pdf
视频 AI 应用
使用动态输入 Schema 实现任务串联
复制全文
下载 pdf
使用动态输入 Schema 实现任务串联

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

功能概述

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

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

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

说明

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

实现方式

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

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

Go Template 语法详解

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

语法部分

说明

示例

{{ ... }}

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

无

.

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

无

Output

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

无

<上游节点名称>

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

.Output.Erase

<输出参数路径>

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

.Output.Erase.File.Vid

使用示例:先字幕擦除,再画质增强

以下示例演示如何先擦除已有视频的字幕,再对擦除结果进行画质增强。您可以在 StartExecution 接口的 Operation.Workflow.Nodes 数组中定义如下两个节点:

  • 节点一:字幕擦除
    • Name: "Erase"
    • Input: 指定已上传视频的 Vid。
    • Operation: 配置精细化字幕擦除任务,设置 NewVid 为 true,为擦除结果生成新的 Vid。
  • 节点二:画质增强
    • Name: "Enhance"
    • Dependencies: ["Erase"],声明此节点依赖于上游节点。
    • Input: 配置动态输入。
      • Schema: "Template",启用动态输入功能。
      • Input.Vid: {{.Output.Erase.File.Vid}},引用上游节点输出的 File.Vid。

以下为请求示例,请将 your-test-space 和 your-video-id 替换为实际的空间名称和视频 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" : "Erase",
               "Input" : {
                  "Type": "Vid",
                  "Vid": "your-video-id"
               },
               "Operation" : {
                  "Type" : "Task",
                  "Task" : {
                     "Type" : "Erase",
                     "Erase" : {
                        "Mode" : "Auto",
                        "Auto" : {
                           "Type" : "Subtitle"
                        },
                        "NewVid" : true
                     }
                  }
               }
            },
            {
               "Name" : "Enhance",
               "Input" : {
                  "Type": "Vid",
                  "Vid": "{{.Output.Erase.File.Vid}}",
                  "Schema": "Template"
               },
               "Operation" : {
                  "Type" : "Task",
                  "Task" : {
                     "Type" : "Enhance",
                     "Enhance" : {
                        "Type": "Moe",
                        "MoeEnhance": {
                          "Config": "common",
                          "Target": {
                            "Res": "1080p"
                          }
                        }
                     }                     
                  }     
               },
               "Dependencies":["Erase"]
            }
         ]
      }
   }
}
最近更新时间:2026.09.18 21:46:18
这个页面对您有帮助吗?
有用
有用
无用
无用