
# 抽帧截图（官方算子）
#### 方案概述
需要对视频抽帧截图时，在不编写额外代码的情况下使用抽帧截图算子对视频进行指定时间点截帧。
#### 方案架构
图1抽帧截图官方算子架构图   
![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002567134465.png "点击放大")
1. 用户使用对象域名向OBS发送请求。
2. DWR收到请求，同步执行位于FunctionGraph的视频截图抽帧算子实例，调用MPC服务。
3. MPC服务完成抽帧截图，将结果写回租户桶。
4. DWR读取租户桶并将结果返回给用户。
 
#### 方案优势
无需额外代码编写，快速构建视频抽帧截图应用。
#### 约束与限制
该抽帧截图算子目前暂不支持中文对象。
#### 资源和成本规划
表1资源和成本规划 
| 资源              | 资源说明                    | 数量 | 每月费用                                                                                                                                                       |
|:---|:---|:---|:---|
| OBS             | 算子请求OBS API。            | 1  | 通过算子对数据进行处理，都会涉及到对OBS API的调用，每调用一次API都计算一次请求次数。对象存储服务OBS会根据调用API的请求次数进行费用收取，收取详情参见[OBS请求费用说明](https://support.huaweicloud.com/price-obs/obs_42_0004.html)。 |
| FunctionGraph函数 | 算子使用FunctionGraph函数工作流。 | 1  | 通过算子对数据进行处理，会使用到函数工作流的资源，比如算子执行时长，函数工作流会根据资源使用情况进行收费，收费详情参见[函数工作流计费说明](https://support.huaweicloud.com/price-functiongraph/functiongraph_00_0001.html)。    |
| 抽帧截图算子          | 使用抽帧截图算子快速构建视频抽帧截图应用。   | 1  | 由媒体处理服务MPC进行收费，详情查看[计费说明](https://support.huaweicloud.com/price-mpc/mpc_10_0001.html)。                                                                     |
   
#### 操作流程
图2操作流程   
![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002567014449.png)
1. 开通MPC服务授权。
2. 在DWR控制台创建工作流，选择抽帧截图算子进行工作流编排。
3. 配置相关参数。
4. 在DWR控制台，创建同步工作流。
5. 触发工作流执行。
 
#### 准备工作
1. 单击"开通服务"，开通MPC服务授权。
   图3开通MPC服务   
   ![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002536094694.png "点击放大") 
2. 选择打开**委托授权** 或**桶授权** 。
   委托授权：开启后，媒体处理服务将拥有您所有桶的读写权限，子账号不支持委托权限。
   桶授权：开启后，媒体处理服务仅拥有已授权桶的读写权限。
   图4打开委托授权或桶授权   
   ![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002536254632.png "点击放大") 
 
#### 实施步骤
1. 登录DWR控制台，在"工作流"页面单击右上角"创建工作流"，进入创建工作流界面，选择抽帧截图算子进行工作流编排。
2. 打开右侧动态参数开关，配置动态参数。 
   图5配置算子动态参数   
   ![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002567134467.png "点击放大")
   
   
3. 按照指定时间点截图并输出最长边尺寸为480的截图，参数修改如下： 
   bucket: 抽帧截图结果输出的桶名，如图所示填为test-workflow-sh1
   output: 抽帧截图结果在输出桶下的输出路径如图中所示输出图片的路径为桶test-workflow-sh1的output目录
   tar: 抽帧截图图片是否需要压缩， 选择否
   sync: 是否同步处理图片，目前只有按照时间点截图支持同步
   type: 抽帧截图的采样类型，选择按照时间点截图
   format:输出截图格式，目前只支持jpg格式
   max_length: 截图最长边的尺寸，填入480
   width：输出截图的宽度，填入0
   height：输出截图的高度，填入0
   (当有Width和Height均不为0时，按照width和height限制输出图片的尺寸.
   当width和height为0，Max_length不为0时，按照max_length计算得出图片尺寸)
   dots: 指定时间截图时的时间点数组，填入\[2\]代表截取视频的第2秒。如果需要第0s首帧则填入\[0\]
   图6算子动态参数   
   ![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002567014451.png "点击放大")
   
   
4. 配置完成后，单击"保存"。
5. 选择创建同步工作流，可选择支持匿名访问。
6. 同步触发工作流。 
   请确保创建的工作流，触发的桶和获取结果写入的桶在同一个region
   ![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002536094698.png)
   使用方式为: \<对象url\>?x-workflow-graph-name={工作流名称}
   使用参数：x-workflow-graph-name后跟上工作流名称，即可同步触发工作流。
   当需要对工作流参数做修改时，可以选择两种方式。以修改截图最长边的尺寸到500，采样点到11s为例：
   1. 直接在url后对参数修改 在工作流名称后使用'/'加上参数名，再使用'_'连接加上指定参数值．不同参数间使用','分隔
      \<对象url\>?x-workflow-graph-name={工作流名称}/\<参数名\>_{参数值}
      对应的参数名请单击工作流名称，进入工作流"基本信息"页签的右侧算子属性查看。
      触发工作流:
      ![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002567134469.png)
      ![](https://support.huaweicloud.com/bestpractice-dwr/public_sys-resources/caution_3.0-zh-cn.png)
      当参数名有下划线时，需将下划线转成%5F。
      
   
   2. 直接在DWR工作流界面修改
      1. 进入DWR工作流界面，并单击工作流名称进入工作流基本信息页签。
      
      2. 单击基本信息页签右侧的![](https://support.huaweicloud.com/bestpractice-dwr/zh-cn_image_0000002536094700.png)，再单击"动态参数"右侧的"修改"，对参数进行修改。
         修改dots为\[11\]，max_length为500，单击"确定"。
         再次同步触发工作流，获得结果。
         
       
   
   
   
   
 
