human: 如何处理七牛云的智能多媒体服务工作流原理

gpt: [智能多媒体服务](https://developer.qiniu.com/dora) > 使用指南 > 开发指南 >工作流原理

#  工作流原理

最近更新时间: 2021-04-15 16:54:20

**工作流** （即定义处理一个对象文件的所有计算能力），支持在控制台自定义任务处理的流程，产出一个符合业务需求的输出。

本文为您介绍**工作流** 的使用场景、设计、示例、使用方式。

# **简介**

工作流旨在将大部分多媒体处理功能流程化、实例化，用户可提前编排任务处理流程，对多媒体文件按照特定工作流进行处理，避免用户重复、繁琐的调用接口，提供一站式的多媒体处理服务。同时，工作流提供了条件判断机制，可自定义下一节点处理的触发条件，便于灵活组建场景化处理流程。

## 适用哪些场景？

如果您有以下多媒体处理需求时，或者您期望实现一个 **弹性、易用、低成本、灵活支持处理逻辑** 的多媒体处理系统，那么工作流则是您期待的最佳解决方案。

  * 您有大量并发处理需求，需要同时对一批多媒体文件做多种处理。

>     * 比如转码成不同规格的视频，适配不同终端设备播放。

  * 您有更高级的自定义处理需求。

>     * 比如仅对>=1080p的视频做转码，需要通过执行条件来判断对哪些视频做处理，从而减少不必要的处理。
>     * 比如先对原视频进行内容审核，对审核结果正常的视频进行转码，对违规视频进行封禁，来规避风险和减少不必要的处理开销。

  * 您需要经过多个步骤的计算处理，得到一个想要的结果。

>     * 比如先锐智转码、加水印，再对转码后的文件添加固定的片头/片尾。

  * 您需要对上传到 kodo 空间的文件，自动触发工作流，发起任务处理请求。

  * 您不太清楚如何根据自己的业务场景进行配置，工作流提供了多种推荐配置方案，降低了使用难度。

​

## **工作流特点**

工作流具有的以下特点：

>   * 支持大量的并发处理。
>   * 提供丰富的计算处理原子服务，如转码、拼接、截图、水印，后期将接入内容审核、智能标签等AI能力。
>   * 条件判断机制的引入，可自定义下一节点处理的触发条件。
>   * 子节点可以对父节点的输出做再加工计算处理，通过多个步骤的计算处理，从而将源文件转化成符合业务需求的输出。
>   * 工作流配置可视化，可增强进度可观测性。
>   * 模板可固化工作流，减少重复工作，统一业务处理流程标准。
>

# **工作流示例**

**1\. 创建多个并发处理的工作流**

![img](https://dora-doc.qiniu.com/WX20201208-145138.png)

>   * 示例：**普通转码 + 锐智转码 + 视频拼接 + 截图处理**
>     * 此流程表示：同时对源文件进行普通转码、锐智转码、视频拼接、截图处理。
>   * 输入源说明：
>     * 所有节点的输入源： **源文件**
>

​

**2\. 创建多个原子服务串联处理的工作流**

![img](https://dora-doc.qiniu.com/WX20201222-102840.png)

>   * 示例：**锐智转码 - > 视频拼接 -> 输出**
>     * 此流程表示：先对源文件进行锐智转码处理，然后对锐智转码后的结果进行视频拼接处理。
>   * 输入源说明：
>     * 锐智转码节点的输入源：源文件
>     * 视频拼接节点的输入源：锐智转码后的处理结果
>

​

**3\. 创建有条件判断的工作流**

1）示例：**视频审核 - > 执行条件（结果违规） -> 封禁 、视频审核 -> 执行条件（结果正常）-> 普通转码 -> 输出**

![img](https://dora-doc.qiniu.com/WX20210223-114858%402x.png)

>   * 此流程表示：先对源文件进行内容审核，根据执行条件对【违规视频】进行封禁，对【正常视频】进行普通转码处理。
>   * 输入源说明：
>     * 视频审核节点的输入源是： 源文件
>     * 执行条件节点的输入源是 ： 视频审核后的处理结果
>     * 普通转码节点的输入源是 ：源文件
>

​

2）示例：**音视频元信息 - > 执行条件 -> 普通转码 -> 输出**

![img](https://dora-doc.qiniu.com/WX20201222-100236.png)

>   * 此流程表示：先对源文件获取音视频元信息，判断原视频分辨率范围，在范围内的视频，进行普通转码处理；不在范围内的视频，不再流转到下一步处理。
>   * 输入源说明：
>     * 音视频元信息节点的输入源： 源文件
>     * 执行条件节点的输入源 ： 音视频元信息处理后的处理结果
>     * 普通转码节点的输入源 ：源文件
>

​

**4.串行工作流子节点输入源说明**

父节点类型 | 输入源 | 下一节点可选处理类型  
---|---|---  
普通转码 | 默认处理结果，作为下一节点输入源  
**注意** :当转码格式为 m3u8 时，不支持继续添加处理节点 | \- 普通转码  
\- 锐智转码  
\- 截图  
\- 视频拼接  
  
锐智转码 | 默认处理结果，作为下一节点输入源  
**注意** :当转码格式为 m3u8 时，不支持继续添加处理节点 | \- 普通转码  
\- 锐智转码  
\- 截图视频  
\- 视频拼接  
\- 截图  
视频拼接 | 默认处理结果，作为下一节点输入源 | \- 普通转码  
\- 锐智转码  
\- 截图视频  
\- 视频拼接  
\- 截图  
音视频信息 | 默认处理结果，作为下一节点输入源 | \- 条件判断  
\- 输出  
视频审核 | 默认处理结果，作为下一节点输入源 | \- 条件判断  
\- 输出  
\- 封禁  
执行条件 | 作为下一节点处理的前置判断条件，当前支持的有：  
1、音视频元信息  
2、视频审核 | \- 普通转码  
\- 锐智转码  
\- 截图视频  
\- 视频拼接  
\- 截图  
\- 输出  
截图 | 当前版本，处理结果不支持作为下一节点的输入源 | \- 输出  
封禁 |  | 当前只适用于视频审核场景，为结束节点  
输出 |  | 为结束节点  
  
  * 父节点为【音视频元信息】，执行条件介绍如下：

条件 | 条件描述  
---|---  
分辨率 | 判断视频分辨率范围，对范围内的视频做下一步处理。  
  * 父节点为【视频审核】，执行条件介绍如下：

执行条件 | 条件描述  
---|---  
视频审核结果为【正常】 | 父节点审核结果为正常时，执行下一节点处理  
视频审核结果为【违规】 | 父节点审核结果为违规时，执行下一节点处理  
视频审核结果为【疑似】 | 父节点审核结果为疑似时，执行下一节点处理  
视频审核结果不是【正常】 | 父节点审核结果为【违规】或【疑似】，执行下一节点处理  
视频审核结果不是【违规】 | 父节点审核结果为【正常】或【疑似】，执行下一节点处理  
  
​  
**5.输出**

对节点的处理结果进行保存时，需要点击【输出】节点进行配置，不同的处理类型的输出会有差异。

  * **单输出** ，普通转码->mp4。

![img](https://dora-doc.qiniu.com/WX20201208-100531.png)

>     * **输出空间** ：必填项，处理完成后新生成文件将存储在该空间中。
>
>     * **输出文件名** ，支持以下两种命名方式：
>
> a. **前缀+后缀** ： 至少填写1个
>
> b. **魔法变量** ：点击【切换自定义文件名】
>
>       * 支持[魔法变量
> __](https://developer.qiniu.com/kodo/manual/1235/vars#magicvar)或自定义字符串。魔法变量引用格式为
> {{.var}} ，魔法变量仅支持 bucket、key、fname、fprefix、ext、count。

​

  * **多输出** ，普通转码->m3u8。

![img](https://dora-doc.qiniu.com/WX20201208-115255.png)

>     * **输出空间** ：必填项，处理完成后新生成文件将存储在该空间中。
>
>     * **输出文件名** ，支持以下两种命名方式：
>
> a. **前缀+后缀** ：至少填写1个
>
> b. **魔法变量** ：点击【切换自定义文件名】
>
>       * 支持[魔法变量
> __](https://developer.qiniu.com/kodo/manual/1235/vars#magicvar)或自定义字符串。魔法变量引用格式为
> {{.var}} ，魔法变量仅支持 bucket、key、fname、fprefix、ext、count。

​​

# **处理流程**

工作流的处理流程如下：

![img](https://dora-doc.qiniu.com/WX20201216-153230.png)

  1. 用户在智能多媒体平台，配置工作流。

  2. 用户上传多媒体文件。

  3. 任务发起方式

     * **指定文件** ，选择工作流。
     * **创建任务触发器** ，上传完成后自动触发工作流。
  4. 工作流引擎根据工作流配置，自动发起多媒体处理请求。

​

# **创建工作流**

登录【智能多媒体控制台】，进入【导航栏->工作流】页面。如何创建工作流，详细的控制台操作，请参考
[工作流](https://developer.qiniu.com/dora/manual/6490/the-workflow-template)。

以上内容是否对您有帮助？