工作流

最近更新时间:2019-08-28 09:24:39

工作流表示对一个源文件(音视频文件)发起的一系列作业任务的集合,这些任务以流水线的形式向前执行,因此称为“工作流”。工作流中的作业任务可以是并行的,也可以是串行的,作业任务在视频处理中一般简称“任务”,工作流示意图如下:

  • 圆形:表示任务的开始和结束。
  • 菱形:表示任务的分解。
  • 圆角矩形:表示具体任务的执行单元。
  • 圆点:表示任务的组合或合成。
  • 箭头:表示不同任务或相同任务的不同阶段的执行路径。

以视频处理为例,工作流包含转码、采样截图、时间点截图、转动图、雪碧图以及水印等作业任务。典型的视频处理任务工作流示例如下:

转码开始后,如果包含多个规格的转码任务,如标清、高清转码以及多尺寸截图等,则这些任务会被分解,然后并行执行,各转码子任务完成后再将结果进行合并,最后任务结束。

工作流原理

以视频处理为例,工作流程主要包括配置工作流、触发转码、转码任务处理以及发送事件通知等。工作流原理图如下:

  1. 配置工作流
    管理员通过控制台配置工作流。前置工作包括申请 CMQ 和 COS Bucket,并对视频处理服务角色进行相应授权。
  2. 触发转码
    上传者通过 SDK 或控制台将音视频文件上传到申请的 COS Bucket,此时会触发绑定到该 Bucket 上的工作流任务,即触发转码任务,开发者也可以通过 API ProcessMedia 来对单个文件发起转码任务。
  3. 转码任务处理
    在工作流处理任务的过程中,会对 COS 文件进行读写操作,如下载源文件、上传转码后的文件等。
  4. 发送事件通知
    工作流处理结束后,视频处理会将任务完成消息发送到上述 CMQ,然后开发者可通过 CMQ 接口接收该事件消息。
    说明:

    • 工作流简介请参见 工作流,工作流设置请参见 设置工作流
    • 在确认文件转码成功后,您可以继续进行后续的业务逻辑,如通过 CDN 分发转码后的视频等。

配置工作流

如果您要实现文件上传时自动触发转码任务,则需要预先配置工作流。工作流会对指定 COS Bucket 中上传的文件自动发起特定的转码任务,并将转码结果文件上传到指定的相同或不同 COS Bucket。

如果您不需要上传时自动触发转码任务,则可以通过调用 API 的方式主动触发单个文件转码任务,此时无需配置工作流。

触发转码

触发转码任务包括自动触发和主动触发两种方式:

  • 自动触发:通过配置工作流,文件上传时会自动触发转码任务。

  • 主动触发:通过调用 API 发起转码任务,然后通过 CMQ 接收完成事件通知或通过 TaskId 主动查询任务完成状态。详细请参见 主动发起转码

    说明:

    • 图中第5步表示开发者可通过调用 API 查询任务状态,参数为发起任务返回的 TaskId。
    • 图中红色框区域表示可选,即在主动触发转码的情况下,开发者可选择通过 CMQ 接收事件通知,也可以如图中第5步通过 API 查询任务状态信息。

转码任务处理

转码任务处理包括转码、截图、水印等任务处理以及转码结果文件上传。在任务具体执行过程中,任务会分解成多个子任务,子任务间以并行或串行的方式进行处理,从而加快处理速度。

如果任务处理完成,则视频处理服务会将转码结果文件上传到您指定的 COS Bucket。如果转码结果文件上传失败,则任务最终状态为失败。

发送事件通知

在转码任务处理完成后(成功或失败),视频处理服务会将该文件的转码结果信息返回给您,您需要接收该消息通知并作出适当处理。