本文详细介绍 StartExecution - 提交媒体处理任务接口中的动态输入 Schema 功能。通过此功能,您可以构建复杂、自动化的媒体处理流水线,将多个任务节点无缝串联起来。
在传统的媒体处理中,如果您需要对一个视频执行多个连续操作(例如先进行字幕擦除,再对擦除结果进行画质增强),通常需要分三步操作:
动态输入 Schema 功能允许您在单次任务提交中,预先定义好工作流内部不同节点之间的数据依赖关系。工作流引擎会自动处理节点间的数据传递和执行调度,实现全自动的任务串联。
说明
Schema 接收动态输入。FileId 模式的输入不支持通过 Schema 动态指定。动态输入 Schema 的工作原理基于 Go Template 语法。
Input 对象中,将 Schema 字段的值设为 Template。Input 对象的其他字段(如 Vid 或 DirectUrl.FileName)中,使用 Go Template 语法来引用上游节点的输出。StartExecution 接口提交整个工作流后,系统会:
map 中。Input 字段中的模板字符串,从上下文中查找并动态注入所需的数据。模板字符串的基本语法结构如下:"{{.Output.<上游节点名称>.<输出参数路径>}}"
语法部分 | 说明 | 示例 |
|---|---|---|
| Go Template 的固定语法边界,用于包裹表达式。 | 无 |
| 代表模板的根对象,即工作流的执行上下文。 | 无 |
| 一个固定的 | 无 |
| 您在工作流中为上游节点设置的节点名称 ( |
|
| 您想要引用的、上游节点输出结果中的具体字段路径,支持多层级访问。 |
|
以下示例演示如何先擦除已有视频的字幕,再对擦除结果进行画质增强。您可以在 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"] } ] } } }