
# 直播截图
视频直播提供了截图功能，支持按配置截图模板在推流过程中截取直播画面，并存储在OBS桶中。一个推流域名下可以配置多个不同AppName的截图模板，即当推流开始时，启动直播截图功能，其中与推流地址中的AppName相同的截图模板生效。
#### 截图流程
直播服务截图模板的配置流程，如[图1]所示。
图1截图模板配置流程图   
![](https://support.huaweicloud.com/iLive-live/zh-cn_image_0218764011.png)
1. [创建桶（可选）]：创建用于存储直播截图文件的OBS桶，若已有OBS桶，可直接跳转到[2]。
   ![](https://support.huaweicloud.com/iLive-live/public_sys-resources/note_3.0-zh-cn.png)
   存储直播截图的OBS桶必须与使用的直播服务在同一区域，如使用"华北-北京四"的直播服务，则直播截图只能存储在"华北-北京四"区域的OBS桶。
   
2. [桶授权]：在直播服务中对存储截图的OBS桶进行授权，允许直播服务将截图存储在对应的OBS桶中。
3. [配置截图模板]：直播视频将按照设定的间隔时间对正在直播的视频进行画面截图操作，并以.jpg文件保存至指定的OBS存储位置。
4. [查看直播截图]：直播截图模板配置成功后，启动直播推流，可以通过截图的输出路径快速进入到OBS桶中查看存储的直播截图，还可以通过回调消息查看直播截图。
 
#### 注意事项
- 直播服务所在区域与存储截图的OBS桶需在同一区域。
- 推荐将OBS桶设置为私有桶，效果如下所示：
  - 如果将OBS桶设置为私有桶，必须添加鉴权信息，才能访问并下载OBS截图文件。鉴权信息可参考[OBS生成带授权信息的URL文档](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0601.html)生成。
  
  - 如果将OBS桶设置为公开桶，则可直接访问并下载OBS截图文件。
   
- 一个域名可配置多个截图模板，与推流地址中的AppName相同的截图模板生效。
- 暂只支持截图生成JPG格式的图片文件。
- 华为云视频直播服务计划于2024年8月15日，下线截图回调地址携带鉴权信息功能，届时截图回调地址将不再携带鉴权信息。
 
#### 前提条件
- 已[添加推流域名](https://support.huaweicloud.com/iLive-live/live010002.html)。
- 已在域名DNS服务商处完成[CNAME解析配置](https://support.huaweicloud.com/iLive-live/live010010.html)。
- 直播截图产生的截图文件最终是存储在对象存储服务中的，因此您需要先开通对象存储服务，具体请参见[OBS快速入门](https://support.huaweicloud.com/qs-obs/obs_qs_0001.html)。
 
#### 费用说明
- 直播截图功能为计费项，视频直播服务将根据实际产生的视频截图数量收取费用。具体价格详情请参见[Live产品价格详情](https://www.huaweicloud.com/pricing/calculator.html#/live)。
- 直播截图生成的截图文件最终存储在对象存储服务中，因此，产生的存储使用量费用将由对象存储服务单独收取。具体价格详情请参见[OBS产品价格详情](https://www.huaweicloud.com/pricing/calculator.html#/obs)。
 
 #### 步骤一：创建桶（可选）
若您还未在OBS服务中创建用于存储文件的桶，或者您需要新创建桶用于存储直播截图文件，请参见[OBS帮助中心](https://support.huaweicloud.com/qs-obs/obs_qs_0001.html)创建与使用的直播服务同一区域的OBS桶。否则，请直接跳转到[步骤二：OBS桶授权]。
 #### 步骤二：OBS桶授权
操作详见[云资源授权](https://support.huaweicloud.com/iLive-live/live_01_0084.html)。
 #### 步骤三：配置直播截图
OBS授权成功后，您可以开始配置直播截图模板。
1. 登录[视频直播控制台](https://console.huaweicloud.com/live2/#/live/home)。
2. 在左侧导航栏中，选择"域名管理"，进入域名管理页面。
3. 在需要进行直播截图的推流域名行，单击"管理"。
4. 选择"截图配置"页签，单击"新建截图"，界面右侧弹出"截图配置"对话框。 
   图2配置直播截图模板   
   ![](https://support.huaweicloud.com/iLive-live/zh-cn_image_0000001882763585.png)
   具体参数配置说明请参见[表1]。
    表1截图参数配置 
   | 参数名        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|
   | 应用名        | 应用名称，默认为"live"，您也可以根据实际需求进行自定义，支持大小写字母、数字、下划线（_）中划线（-）。必须与推流地址中的应用名对应，截图模板才能生效。                                                                                                                                                                                                                                                                                                                                      |
   | 存储位置       | 直播截图存储在OBS服务。                                                                                                                                                                                                                                                                                                                                                                                                        |
   | 存储-桶       | 存储直播截图的OBS桶。                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 存储-路径 (可选) | OBS桶存储直播截图的路径。                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 截图频率       | 截图频率，单位为秒。 取值范围：5-3600。                                                                                                                                                                                                                                                                                                                                                                 |
   | 存储方式       | 存储截图文件的模式。 - **全保存模式**：截图文件名中含时间戳，每条流的所有截图文件均会保存在存储对象里。示例：snapshot/{domain}/{app_name}/{stream_name}/{UnixTimestamp}.jpg  - **覆盖模式**：截图文件名不含时间戳，每条流只保存最新的截图文件，新的截图文件会覆盖原来的截图文件。示例：snapshot/{domain}/{app_name}/{stream_name}.jpg   |
   | 截图模式       | 截图的模式。 - I帧截图：I帧截图只选取并保存符合要求的I帧。  - 非I帧截图：非I帧截图只选取并保存符合要求的非I帧。  - 随机截图：随机截图交替选取并保存符合要求的I帧和非I帧。                                                                        |
   | 设置回调       | 回调开关。如果开启，您需要部署一个HTTP/HTTPS服务来接收回调消息，并在控制台或通过API配置回调地址。当截图成功时，直播服务端会向该地址发起POST请求，具体内容将通过JSON Body送达。                                                                                                                                                                                                                                                                                                                 |
   | 协议         | 回调地址支持HTTP/HTTPS协议。HTTP可能存在安全风险，推荐使用HTTPS。                                                                                                                                                                                                                                                                                                                                                                           |
   | 回调地址       | 回调开关打开后，输入回调地址，回调地址中不能携带消息头和参数。支持HTTP/HTTPS协议，推荐使用HTTPS协议。 截图回调消息以JSON格式，通过HTTP接口向用户服务器发送POST请求，将截图回调信息反馈到用户服务器。截图回调消息体请参见[回调示例]。                                                                                                                                                                                                                          |
   | 鉴权密钥（可选）   | 鉴权Key值。若需要使用回调鉴权功能，请配置鉴权密钥，否则，留空即可。 - 支持自定义设置，长度为32-128个字符。  - 支持自动生成。                                                                                                                                                                  |
      
   
   
5. 单击"确定"，完成直播截图模板的配置。 
   截图模板配置后，即可开始直播推流，推流过程中，直播服务会根据创建的截图模板对直播流进行截图。
   
   
6. 您可以单击操作列的"修改"，修改直播截图模板的相关参数，其中，AppName不支持修改。
 
 #### 步骤四：查看直播截图
若您已配置直播截图模板，启动直播推流后，可以通过截图的输出路径快速进入到OBS桶中查看存储的直播截图，您还可以通过回调消息查看直播截图。
- 通过控制台查看直播截图
  1. 登录[视频直播控制台](https://console.huaweicloud.com/live2/#/live/home)。
  
  2. 在左侧导航栏中，选择"域名管理"，进入域名管理页面。
  
  3. 在需要查看直播截图的推流域名行，单击"管理"。
  
  4. 选择"截图配置"页签，在需要查看直播截图的应用行单击输出路径，进入OBS桶中查看存储的直播截图详情。
     图3查看截图详情   
     ![](https://support.huaweicloud.com/iLive-live/zh-cn_image_0000001221465917.png)
     您可以对直播截图进行下载、分享等操作，具体请参见[OBS帮助中心](https://support.huaweicloud.com/qs-obs/obs_qs_0001.html)。
     
   
- 通过回调消息查看直播截图
  若您在[配置直播截图模板]时，设置了回调地址，则每生成一张截图都将收到截图回调消息。回调消息字段如[表2]所示。
  ```
  { 
      "domain": "play.example.com",
      "app": "live",
      "stream_name": "test001",
      "snapshot_url": "https://xxx.obs.cn-north-4.myhuaweicloud.com:443...",
      "width":"720",
      "height":"1280",
      "obs_addr": {
          "bucket": "xxx",
          "location": "cn-north-4",
          "object": "xxx.jpg"
      },
     "auth_timestamp": "1587954140",
      "auth_sign":"4918b1axxxxxxb583cffa119d72513bbc35a989f8569fxxxxxx057646154a04a"
  }
  ```
   表2消息体字段说明 
  | 字段             | 描述                                                                                                                                                                                                                                                                                                        |
  |:---|:---|
  | domain         | 推流域名。                                                                                                                                                                                                                                                                                                     |
  | app            | 应用名称。                                                                                                                                                                                                                                                                                                     |
  | stream_name    | 流名称。                                                                                                                                                                                                                                                                                                      |
  | snapshot_url   | 截图下载链接。                                                                                                                                                                                                                                                                                                   |
  | width          | 图片宽度。 单位：像素。                                                                                                                                                                                                                                                                 |
  | height         | 图片高度。 单位：像素。                                                                                                                                                                                                                                                                |
  | obs_addr       | 截图所在的OBS桶地址，具体结构体说明如下所示： - bucket：OBS的桶名称。  - location：OBS桶所在数据中心。  - object：OBS对象路径。   |
  | auth_timestamp | 事件通知签名过期UNIX时间戳。当配置了"鉴权密钥"时，携带该字段。 格式为十进制的UNIX时间戳，即从1970年1月1日（UTC/GMT的午夜）以来的当前时间秒数。 示例：1592639100（即2020-06-20 15:45）                                                                                                                               |
  | auth_sign      | 事件通知签名。当配置了"鉴权密钥"时，携带该字段。 ``` auth_sign = HmacSHA256（domain + app + stream_name + snapshot_url + width + height + obs_addr.bucket + obs_addr.location + obs_addr.object + auth_timestamp,key） ``` 其中，key为鉴权密钥值。                                                                |
     
  
 
